在Bootstrap.groovy
中,我创建了一个新的requestmap,其中ROLE_ADMIN
作为configAttribute和/ **作为URL。当我以ROLE_ADMIN
登录时,我能够访问所有URL。
当我在UI中以ROLE_TEST作为configAttribute和/ customer / **作为URL添加新的requetsmap时,具有ROLE_ADMIN的用户无法访问客户页面。即使ROLE_ADMIN具有/ **特权。
现在,只有具有ROLE_TEST
的用户才能访问客户页面,而其他用户则不能。
该功能所需要的是,测试用户应该只能访问客户页面,而不能访问任何其他页面。但是,当前“客户”页面只能由测试用户访问。
Config.groovy
设置-
grails.plugin.springsecurity.userLookup.userDomainClassName = 'com.bi.report.auth.User'
grails.plugin.springsecurity.userLookup.authorityJoinClassName = 'com.bi.report.auth.UserRole'
grails.plugin.springsecurity.authority.className = 'com.bi.report.auth.Role'
grails.plugin.springsecurity.requestMap.className = 'com.bi.report.auth.Requestmap'
grails.plugin.springsecurity.securityConfigType = 'Requestmap'
Bootstrap.groovy代码
def loadRequestMap(){
if (Requestmap.count()<=0) {
new Requestmap(url: '/**', configAttribute: 'ROLE_ADMIN').save()
/*new Requestmap(url: '/**', configAttribute: 'IS_AUTHENTICATED_ANONYMOUSLY').save()*/
new Requestmap(url: '/*/', configAttribute: 'ROLE_ADMIN').save();
new Requestmap(url: '/logout/**', configAttribute: 'IS_AUTHENTICATED_REMEMBERED,IS_AUTHENTICATED_FULLY').save();
new Requestmap(url: '/login/**', configAttribute: 'IS_AUTHENTICATED_ANONYMOUSLY').save()
new Requestmap(url: '/index/**', configAttribute: 'IS_AUTHENTICATED_ANONYMOUSLY').save();
}
}
欢迎大家提出意见。
谢谢。
Grails版本
2.3.4
Spring Security插件:compile ":spring-security-core:2.0-RC2"
最佳答案
您需要定义可以访问URL的所有角色。
例如:
new Requestmap(url: '/admin/user/**', configAttribute: 'ROLE_ADMIN,ROLE_SUPERVISOR').save()
☝️说具有ROLE_ADMIN或ROLE_SUPERVISOR的用户可以访问URL /admin/user/**
您可以在http://grails-plugins.github.io/grails-spring-security-core/2.0.x/guide/requestMappings.html#requestmapInstances上了解更多有关它的信息。/**
的ROLE_ADMIN
无法按您期望的方式工作,因为该插件会计算适用于当前请求的最具体的规则。/customer/**
比/**
更具体,因此应用了ROLE_TEST
的关联角色。
关于grails - Requestmap无法按预期运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50511756/