我正在开发一个插件来提供一些特定的功能。该插件“拥有一切”:完整的垂直切片(服务、控制器、域类、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
现在就可以在没有整个安全插件的情况下在我的控制器中使用它。安装到主应用程序后,安全插件将自动选择它们。