Sto provando a proteggere un controller con l'annotazione @PreAuthorize
a livello di tipo e provare a sovrascrivere tale comportamento annotando alcuni metodi con un diverso @PreAuthorize
. Tuttavia, il problema è che Spring sta valutando l'annotazione del metodo per prima (accesso concede) e sta quindi valutando l'annotazione della classe (nega l'accesso).L'opzione @PreAuthorize di Spring Security a livello di tipo non può essere ignorata a livello di metodo
C'è un modo per invertire tale ordine? Non riuscivo a capirlo ancora.
Edit:
Al livello di metodo, voglio concedere l'accesso ai soli utenti non registrati:
@PreAuthorize("isAnonymous()")
@RequestMapping(value = "/create", method = RequestMethod.GET)
public String renderCreateEntity(ModelMap model) {
return userService.renderCreateEntity(model);
}
Lo standard per questo controller tuttavia, dovrebbe essere quello di consentire solo agli utenti completamente autenticati:
@Controller
@RequestMapping(value = "/user")
@PreAuthorize("isFullyAuthenticated()")
public class UserController { [...] }
Quando debug-passo attraverso l'applicazione, noto che isAnonymous()
viene valutata per prima e poi isFullyAuthenticated()
conseguente in una concessione di diritto di accesso e immediatamente negare l'accesso di nuovo.
Quale versione di Spring Security utilizzi? – beny23
Tutto primavera è 3.0.5.RELEASE – chzbrgla