0

我注意到在我的代码中,我可以使用@Secured("ROLE_ADMIN") 和@RolesAllowed("ROLE_ADMIN") 成功地注释服务类(@Service) 上的方法。有用。但是,当我将相同的注释移动到控制器类 (@Controller) 时,只有 @Secured 被激活,而 @RolesAllowed 被忽略。我配置了我的根应用程序上下文

<security:global-method-security 
          jsr250-annotations="enabled" 
          secured-annotations="enabled"/>

为什么 @RollesAllowed 不适用于控制器类而 @Secured 是?

4

2 回答 2

1

@RolesAllowed 在服务级别(但不在控制器中)工作的原因是由于我的配置错误。为了使它工作,我必须在扫描我的控制器的同一配置文件(上下文)中声明全局方法安全性。例如:

<context:component-scan base-package="mrpomario.springcore.mvc.controller"/>
<security:global-method-security 
          jsr250-annotations="enabled" 
          secured-annotations="enabled"/>
于 2012-10-05T16:27:22.203 回答
0

不保证混合不同的注释会产生一致的行为。

手册

您可以在同一个应用程序中启用多种类型的注释,但任何接口或类只能使用一种类型,否则行为将不会被很好地定义。如果找到两个适用于特定方法的注释,则只会应用其中一个。

于 2012-10-05T20:30:16.587 回答