是否有可能为@PreAuthorize
或@Component
建立Spring Security @Qualifier
的Meta Annotatations?
我想要做的是用@PreAuthorize("hasRole('ADMIN')")
之类的快捷方式替换@IsAdmin
。但我没有在文档中找到任何提示。
答案 0 :(得分:6)
这至少适用于Spring Security 3.0.2.RELEASE:
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@PreAuthorize("hasRole('ADMIN')")
public @interface IsAdmin
{
}
答案 1 :(得分:0)
esajs示例是正确的:
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@PreAuthorize("hasRole('ADMIN')")
public @interface IsAdmin
{
}
但是由于一些奇怪的,未记录的原因,如果没有在配置中打开proxyTargetClass
选项,这将无法在我的Spring Boot(vr 2.1.2.RELEASE)项目中起作用,
@EnableGlobalMethodSecurity(
prePostEnabled = true,
proxyTargetClass = true
)
答案 2 :(得分:0)
是的,它已经记录在官方文档(Spring Security 5.1)中:请参见Method Security Meta Annotations
提供了示例:
@Retention(RetentionPolicy.RUNTIME)
@PreAuthorize("#contact.name == authentication.name")
public @interface ContactPermission {}