我可以在注释上使用 @PreAuthorize
吗?
在 Spring 中,我可以在注释中使用 Component
和 DependsOn
之类的注释,如下所示:
@Target(ElementType.TYPE)
@Component
@DependsOn(CoreInitializerConfig.ROLE_INITIALIZER_ID)
public @interface WebComponent
{
}
它运作良好。但是当我尝试以相同的方式使用
PreAuthorize
时:@Target(
{
ElementType.TYPE, ElementType.METHOD
})
@Component
@PreAuthorize("hasAuthority('PERM_READ_SETTINGS')")
public @interface SettingsAuthorized
{
}
不起作用,我在 MVC Controller pojo 和 Bean 的方法中尝试过,但没有用,我不得不明确指出:
@Controller
@PreAuthorize("hasAuthority('PERM_READ_SETTINGS')")
public class SettingsController
{
...
}
最佳答案
我通过添加 @Retention(RetentionPolicy.RUNTIME)
解决了问题
还建议在最后的注解中加入 @Documented
和 @Inherited
,结果如下:
@Target(
{
ElementType.TYPE, ElementType.METHOD
})
@Component
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
@PreAuthorize("hasAuthority('PERM_READ_SETTINGS')")
public @interface SettingsAuthorized
{
}
关于java - 我可以在自己的注释上使用 Spring Security @PreAuthorize 吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31388677/