2016-04-19 17 views
3

ich die Antwort erraten nicht hier, aber ich habe mich gefragt, ob es eine Möglichkeit war, eine benutzerdefinierte Anmerkung wie diese zu erstellen:Spring Security - Benutzerdefinierte PreAuthorize Annotation?

@Documented 
@Inherited 
@Retention(RetentionPolicy.RUNTIME) 
@Target({ElementType.TYPE, ElementType.METHOD}) 
@PreAuthorize("hasAuthority('" + PermissionRequired.value() + "')") //doesn't work 
public @interface PermissionRequired { 
    String value(); 
} 

So kann ich dies tun:

@PermissionRequired("CREATE_USER") 
public User createuser(User newUser){ 
//.. 
} 

Aber Es scheint keinen Weg zu geben, sich auf die komponierende Anmerkung zu beziehen, wie ich es oben getan habe. Das sieht nicht so aus, als würde etwas @AliasFor lösen, da ich das Feld nicht direkt verwende, sondern es mit einer anderen Zeichenfolge verkette.

Mein Ziel ist es, Sicherheitsanmerkungen zu erstellen, die kein SpEl erfordern.

Antwort

1

JSR-250 zur Rettung!

Aktivieren Sie es auf Ihrer Anwendungsklasse:

@EnableGlobalMethodSecurity(prePostEnabled = true, jsr250Enabled = true) 
public class MyApplication { 
//.. 
} 

Verwenden Sie ihre Anmerkung:

@RolesAllowed({"ROLE_CREATE_USER"}) 
public User createuser(User newUser){ 
//.. 
} 

Es scheint, "ROLE_" Präfixe auf Ihrer Behörden zu verlangen, though.

Verwandte Themen