我正在开发一个插件来提供一些特定的功能。插件“拥有一切”:完整的垂直切片(服务,控制器,域类,GSP)。在插件级别上没有使用安全性。
现在我想将插件集成到主应用程序中,并应用一些安全规则,如@Secured(['ROLE_SUPER'])
。
我现在这样做的方式并不太优雅:
@Secured(['ROLE_SUPER'])
class SomeController extends SomePluginController {}
这种零值代码的大量随着控制器的数量而增长。
这里可以改进什么?
TIA
更新:
grails.plugin.springsecurity.controllerAnnotations.staticRules
地图不起作用。
我有一个带有TaskController和index-action的插件AggregationPlugin。
我试着这么说:
grails.plugin.springsecurity.controllerAnnotations.staticRules = [
'/task/**': ['ROLE_SUPER'],
'/aggregation/**': ['ROLE_SUPER'],
'/plugins/aggregation-0.1/**': ['ROLE_SUPER'],
]
但我仍然可以匿名访问该页面。
我正在使用Grails 1.3.7
和spring-security-core 1.2.7.2
更新#2:
所以,经过一些尝试,我找到了最优雅的解决方案。而不是staticRules在我的设置中由于某种原因不起作用而且可能变得非常大,如果你有很多插件来应用安全性,我在插件中添加了一个依赖项:
compile( 'org.springframework.security:spring-security-core:3.0.7.RELEASE' )
这样我就可以在没有整个安全插件的情况下在我的控制器中使用@Secured
。安装到主应用程序后,安全插件将自动选择它们。
答案 0 :(得分:2)
您可以将插件控制器的配置放在Config.groovy
:
grails.plugins.springsecurity.controllerAnnotations.staticRules = [
'/somePlugin/': ['ROLE_SUPER']
]
查看official docs,向下滚动到 controllerAnnotations.staticRules 部分。