J'essaie d'utiliser preAuthorize pour protéger l'URL. Seules les personnes inscrites au cours peuvent accéder au cours. Voici mon code:@PreAuthorize ne fonctionne pas sur le contrôleur en utilisant
Controller:
@Controller
@RequestMapping(value = "/course/{courseId}")
@PreAuthorize("@userService.isCurrentUserinCourse(authentication, courseId)")
public class SyllabusController {
@RequestMapping(value = { "/syllabus" }, method = RequestMethod.GET)
public ModelAndView syllabusPage(@PathVariable("courseId") int courseId) {
...}
UserServiceImpl:
@Service("userService")
public class UserServiceImpl implements UserService {
@Autowired
private UserDAO userDAO;
@Override
public boolean isUserinCourse(int userId, int courseId) {
return userDAO.isUserinCourse(userId, courseId);
}
@Override
public boolean isCurrentUserinCourse(Authentication authentication, int courseId) {
if (!(authentication instanceof AnonymousAuthenticationToken)) {
return isUserinCourse(((UserModel) authentication.getPrincipal()).getId(), courseId);
}
return false;
}
printemps-security.xml:
<beans:beans xmlns="http://www.springframework.org/schema/security"
xmlns:beans="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-3.2.xsd">
<global-method-security pre-post-annotations="enabled" />
<!-- enable use-expressions -->
<http auto-config="true" use-expressions="true">
et nous je vais à/cours/{id }/syllabus sans connexion, il montre la page où il ne devrait pas. Et le débogage ne va pas dans la méthode isCurrentUserinCourse (Authentication authentication, int courseId) dans UserServiceImpl. où
Re lire le manuel: http://docs.spring.io/spring-security/site/docs/3.0.x/reference/el-access.html#el-pre-post-annotations (pas t la version actuelle mais elle s'applique toujours) –
voir aussi http://stackoverflow.com/questions/32156407/preauthorize-is-not-working-what-peut-les-problems?rq=1 –