我注意到在我的代码中,我可以使用@Secured(“ROLE_ADMIN”)和@RolesAllowed(“ROLE_ADMIN”)成功地在服务类(@Service)上注释方法。有用。但是,当我将相同的注释移动到控制器类(@Controller)时,只有@Secured被激活而@RolesAllowed被忽略。我用
配置了我的root applicationContext<security:global-method-security
jsr250-annotations="enabled"
secured-annotations="enabled"/>
为什么@RollesAllowed不适用于@Secured的控制器类?
答案 0 :(得分:1)
@RolesAllowed在服务级别(但不在控制器中)工作的原因是由于我的配置错误。为了使它工作,我不得不在扫描控制器的同一配置文件(上下文)中声明global-method-security。例如:
<context:component-scan base-package="mrpomario.springcore.mvc.controller"/>
<security:global-method-security
jsr250-annotations="enabled"
secured-annotations="enabled"/>
答案 1 :(得分:1)
不能保证混合不同的注释会产生一致的行为。
来自the manual:
您可以在同一个应用程序中启用多种类型的注释,但是任何接口或类只应使用一种类型,否则行为将无法明确定义。如果找到适用于特定方法的两个注释,则只应用其中一个注释。