我可以在自己的注释中使用Spring Security @PreAuthorize吗?

时间:2015-07-13 16:30:45

标签: java spring spring-mvc spring-security annotations

我可以在注释中使用@PreAuthorize吗?

在Spring中,我可以在注释中使用ComponentDependsOn等注释,如下所示:

@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控制器pojo和Bean的方法中尝试了它并且没有工作,我必须明确地说明:

@Controller
@PreAuthorize("hasAuthority('PERM_READ_SETTINGS')") 
public class SettingsController
{
    ...

}

1 个答案:

答案 0 :(得分:3)

我通过添加@Retention(RetentionPolicy.RUNTIME)解决了问题 它还建议将@Documented@Inherited添加到最终注释中,结果是:

@Target(
{
    ElementType.TYPE, ElementType.METHOD
})
@Component
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
@PreAuthorize("hasAuthority('PERM_READ_SETTINGS')") 
public @interface SettingsAuthorized
{

}