2

我已经浏览了此页面上的 Spring Security 视频。

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

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

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

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

4

1 回答 1

1

是的,您可以通过 Spring AOP 做到这一点:

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

根据您的需要调整表达。

从灵活性的角度来看,XML 声明是好的。考虑以下情况:

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

只有 XML 才有可能。

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

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

于 2013-01-31T09:24:00.977 回答