我一直在尝试保护Spring REST控制器,并且能够使用@Secured({"myrole"})
注释实现方法级安全性。
然而,在我看来,我必须注释我想要保护的每个方法。
是否存在默认情况下所有方法都受到保护的其他机制,我可以使用某些Anonymous
注释将其排除?
答案 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。