【发布时间】:2014-10-18 07:26:06
【问题描述】:
我使用grails 2.3.9 和spring-security-core:2.0-RC3 并使用staticRules 来保证安全性。
我在Config 文件中有以下安全配置:
grails.plugin.springsecurity.userLookup.userDomainClassName = 'com.mkb.User'
grails.plugin.springsecurity.userLookup.authorityJoinClassName = 'com.mkb.UserRole'
grails.plugin.springsecurity.authority.className = 'com.mkb.Role'
grails.plugin.springsecurity.useSwitchUserFilter = true
grails.plugin.springsecurity.logout.postOnly = false
grails.plugin.springsecurity.adh.errorPage = null
grails.plugin.springsecurity.controllerAnnotations.staticRules = [
'/': ['permitAll'],
'/index': ['permitAll'],
'/index.gsp': ['permitAll'],
'/**/js/**': ['permitAll'],
'/**/css/**': ['permitAll'],
'/**/images/**': ['permitAll'],
'/**/favicon.ico': ['permitAll'],
'/controllerC/**': ['ROLE_USER'],
'/**': ['permitAll']
]
那里的安全配置工作正常。
现在我关注URL mappings
"/test/controllerA/$action?/$id?(.${format})?"(controller: 'controllerA')
"/test/controllerB/$action?/$id?(.${format})?"(controller: 'controllerB')
我需要为具有/test/ 的URL 设置安全性,即具有ROLE_ABC 角色的用户可以访问URL myDomain.com/test/controllerA/** 和myDomain.com/test/controllerB/**。
我试过了
grails.plugin.springsecurity.controllerAnnotations.staticRules = [
'/': ['permitAll'],
'/index': ['permitAll'],
'/index.gsp': ['permitAll'],
'/**/js/**': ['permitAll'],
'/**/css/**': ['permitAll'],
'/**/images/**': ['permitAll'],
'/**/favicon.ico': ['permitAll'],
'/test/**': ['ROLE_ABC'],
'/**': ['permitAll']
]
但这不起作用,任何用户都可以访问控制器。
我如何定义安全性?
注意:- 我不能使用@Secured 注释。我只需要Config 的证券
【问题讨论】:
-
嗨 user1690588,你试过 grails.plugin.springsecurity.securityConfigType = "InterceptUrlMap" 吗? (grails-plugins.github.io/grails-spring-security-core/guide/…)
-
@Abincepto:我没有使用
InterceptUrlMap,如果我使用InterceptUrlMap和staticRules,那么我的浏览器中会出现“网站有重定向循环”,不会呈现任何屏幕。 -
您是否在 config.groovy 中添加了下一行? grails.plugin.springsecurity.securityConfigType = "InterceptUrlMap" 你能用所有规则编辑你的帖子吗?
-
@Abincepto 我的所有安全规则都已发布在问题中。
-
抱歉,我写的是规则,而不是静态规则。可能与静态规则有交集。
标签: spring grails spring-security config roles