Spring Security:从代码中移出方法安全注释

时间:2013-01-31 07:51:05

标签: spring-security

我已经浏览了Spring Security视频on this page

36:30左右,他谈到了使用安全注释和方法签名来保护方法,如下所示:

@Secured("ROLE_USER")
public String create();

为什么我们需要将注释与方法一起保留? (因为安全注释没有任何与方法有关)

我可以将这些注释放到一个单独的文件中,以便我可以在不修改实际代码的情况下更改它们吗? (可能使用类似Spring AOP功能的东西)

1 个答案:

答案 0 :(得分:1)

是的,感谢Spring AOP,你可以做到这一点:

<global-method-security>
    <protect-pointcut expression="execution(* com.domain.service.*.*(..))" access="ROLE_USER"/>
</global-method-security>

满足您的需求。

灵活性的角度来看,

XML声明很好。考虑以下情况:

  • 您希望在两个模块中重用某些服务,但您希望使用不同的安全规则。
  • 您希望对每个包应用一些安全限制

只能使用XML。

可读性的角度来看,

注释很好。当您看到某种方法时,您可以直接查看所有安全限制。无需每次都打开一些XML文件并考虑表达式(它是否适用于此方法?)。所以很容易。

不要混用两种方法。这太令人困惑了。检查您的需求并为您选择最适合您的项目。