Gesichert Annotationen in spring security
Ich versuche so konfigurieren Sie die security-Annotationen in spring security. Aber ich habe eine Frage zu dieser -
....
<security:http auto-config="true" use-expressions="true">
....
und wenn ich
@Secured("CUSTOM_ACCESS")
public String query();
funktioniert es nicht. Aber ich benutze
@PreAuthorize("hasRole('CUSTOM_ACCESS')")
public String query();
funktioniert es einwandfrei und es gilt wichtige Rolle spielen. Bedeutet das @Gesicherten Anmerkungen funktioniert nicht mit @PreAuthorize?
Ich auch versucht, indem
<security:global-method-security secured-annotations="enabled" />
Aber es hilft nicht.
<security:global-method-security pre-post-annotations="enabled" />
Den oben genannten config funktioniert einwandfrei. Irgendwelche Ideen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
First off, die
use-expressions
Einstellung Ihrer<http>
- element hat keine Auswirkungen auf die Methode, Sicherheit Anmerkungen. Diese werden aktiviert durchglobal-method-security
.Mit
ermöglichen
PreAuthorize
und die zugehörigen Anmerkungen. Der Grund der gesicherten annotation nicht funktioniert, wenn Sie aktivieren, dass ist, weil es keine Wähler, die weiß, wasCUSTOM_ACCESS
bedeutet. In seiner Standard-setup Spring Security istRoleVoter
verbraucht nur Attribute, die beginnen mit dem PräfixROLE_
. Sehen diese FAQ für weitere Informationen.Wähler kann verwendet werden für andere Dinge als Prüfung für einfach Rollen, so dass Sie müssen in der Regel einige Art und Weise der Ermittlung, welche von den Parametern konfiguriert, die für eine Methode, die für Sie gelten. Der Ausdruck-basierte Annotationen funktionieren anders als die standard-Wähler. Die
hasRole
Ausdruck sieht einfach für eine benannte Behörde, die dem Benutzer zugewiesen ist.Also, wenn Sie erstellt eine
AccessDecisionManager
für die Methode, die Sicherheit, mit einemAccessDecisionVoter
was verbraucht IhrCUSTOM_ACCESS
Attribut dann die@Secured
annotation wirken würden. Aber da haben Sie es arbeiten mitPostAuthorize
schon können Sie wollen einfach nur mit dem stick.<sec:global-method-security secured-annotations="enabled" pre-post-annotations="enabled" proxy-target-class="true"/>