java Spring REST控制器全局安全注释

时间:2015-10-20 11:17:17

标签: java spring-security annotations

我一直在尝试保护Spring REST控制器,并且能够使用@Secured({"myrole"})注释实现方法级安全性。

然而,在我看来,我必须注释我想要保护的每个方法。

是否存在默认情况下所有方法都受到保护的其他机制,我可以使用某些Anonymous注释将其排除?

2 个答案:

答案 0 :(得分:1)

我认为在您的情况下,最好使用基于表达式的访问控制,因此您无需在任何地方添加注释。以下是基于xml的上下文配置示例。

<http use-expressions="true">
...
    <intercept-url pattern="/**" access="hasRole('myrole')"/>
...

据我所知,没有这样的注释可以覆盖这种默认行为,但是你可以通过定义相应的intercept-url模式来实现。 有关详细信息,请查看此处https://docs.spring.io/spring-security/site/docs/3.0.x/reference/el-access.html

答案 1 :(得分:0)

解决方案是使用this之类的安全切入点:

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

要了解有关切入点的更多信息,请阅读Spring AOP

这里有一些examples如何使用Poincuts。