J'essaie de protéger un contrôleur avec l'annotation @PreAuthorize
au niveau du type et d'essayer de contourner ce comportement en annotant certaines méthodes avec un @PreAuthorize
différent. Le problème est cependant que Spring évalue d'abord l'annotation de la méthode (accorde l'accès) et évalue ensuite l'annotation de classe (refuse l'accès).Le paramètre @PreAuthorize de Spring Security au niveau du type ne peut pas être ignoré au niveau de la méthode
Y a-t-il un moyen d'inverser cet ordre? Je ne pouvais pas encore le comprendre.
Edit:
Sur le plan de la méthode, je veux accorder l'accès aux utilisateurs non enregistrés seulement:
@PreAuthorize("isAnonymous()")
@RequestMapping(value = "/create", method = RequestMethod.GET)
public String renderCreateEntity(ModelMap model) {
return userService.renderCreateEntity(model);
}
La norme pour ce contrôleur cependant, devrait être de permettre que les utilisateurs complètement authentifiés:
@Controller
@RequestMapping(value = "/user")
@PreAuthorize("isFullyAuthenticated()")
public class UserController { [...] }
Lorsque le débogage pas à pas à travers l'application, je vois que isAnonymous()
est évalué d'abord, puis isFullyAuthenticated()
entraînant ainsi dans une concession de droit d'accès et de refuser immédiatement l'accès à nouveau.
Quelle version de Spring Security utilisez-vous? – beny23
Tout le ressort est 3.0.5.RELEASE – chzbrgla