Ich habe eine Webanwendung konfiguriert, Spring Security 3.2 standardmäßig zu verwenden.Spring Security: Verweigern Sie den Zugriff auf Controller-Methoden, wenn @PreAuthorize Annotation fehlt
Ich verwende die @PreAuthorize
Annotation, um die Controller-Methode zu sichern. Nun möchte ich den Zugriff auf jede Controller-Methode UNLESS es ist mit @PreAuthorize
annotiert.
Ich habe folgende Ansätze versucht:
Super Controller
Jeder Controller von einem Super-Controller erweitert kommentierte mit: @PreAutorize("denyAll")
. Dieser Ansatz scheint nicht zu funktionieren, da die Methoden-Annotationen der Controller ignoriert werden. Alles ist verboten.
@PreAutorize("denyAll")
public class SuperController {
}
public class MyController extends SuperController {
@PreAuthorize("hasRole('SUPERHERO')")
@RequestMapping(value = URL_PREFIX + "Add.do", method = RequestMethod.GET)
public String doStuff(Model model) {
...
}
}
aop
einen pointcut Ausdruck in dem globalen Methode Sicherheitsetikett
<global-method-security pre-post-annotations="enabled">
<protect-pointcut expression="execution(* com.acme.*Controller.*(..))" access="denyAll" />
</global-method-security>
Dieser Ansatz scheitert auch: Methoden des Controller, die nicht mit Anmerkungen versehen ist, sind noch verfügbar.