Spring Security - 自定义PreAuthorize注释?

时间:2016-04-19 20:40:17

标签: spring-security

我猜这里的答案是否定的,但我想知道是否有办法创建这样的自定义注释:

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

所以我可以这样做:

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

但似乎没有一种方式来引用构图注释,就像我上面所做的那样。这看起来不像@AliasFor会解决,因为我没有直接使用该字段,我将它与另一个字符串连接。

我的目标是创建不需要任何SpEl的安全注释。

1 个答案:

答案 0 :(得分:2)

JSR-250救援!

在您的应用程序类上启用它:

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

使用他们的注释:

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

似乎要求" ROLE _"但是,你当局的前缀是。