【发布时间】:2015-12-31 18:52:11
【问题描述】:
我的应用有这个 url 映射:
"/"(controller: 'app', action: 'index')
我正在使用域类将 RequestMap 实例存储在数据库中。 对 app/index 的访问仅限于某些角色,因此当用户点击 / 或 /app/index 时,会显示登录表单。
当有权查看 / 或 /app/index 的用户登录时,该应用会显示一条消息:“抱歉,您无权查看此页面。”,所以出于某种原因,Spring Security 没有考虑我的 RequestMaps。
我尝试了很多组合,也许我错过了一些东西。我现在拥有的是(Bootstrap.groovy):
new RequestMap(url: '/', configAttribute: 'ROLE_ADMIN').save()
new RequestMap(url: '/app/index', configAttribute: 'ROLE_ADMIN').save()
new RequestMap(url: '/**', configAttribute: 'ROLE_ADMIN').save()
我用来登录的用户分配了 ROLE_ADMIN,这是控制台登录登录:
userDetails grails.plugin.springsecurity.userdetails.GrailsUser@586034f:
Username: admin; Password: [PROTECTED]; Enabled: true; AccountNonExpired: true;
credentialsNonExpired: true; AccountNonLocked: true; Granted Authorities: ROLE_ADMIN
auth com.cabolabs.security.UserPassOrgAuthToken@40a3c9e2:
Principal: grails.plugin.springsecurity.userdetails.GrailsUser@586034f:
Username: admin; Password: [PROTECTED]; Enabled: true; AccountNonExpired: true;
credentialsNonExpired: true; AccountNonLocked: true; Granted Authorities: ROLE_ADMIN;
Credentials: [PROTECTED]; Authenticated: true; Details: null; Granted Authorities: ROLE_ADMIN
仅供参考,我自定义登录以使用用户+密码+组织,这就是为什么有一个 UserPassOrgAuthToken 而不是标准的 UsernamePasswordAuthenticationToken
编辑
我也有rejectIfNoRule = true 和defaultTargetUrl = '/app/index',不确定这是否会影响任何事情:
grails.plugin.springsecurity.rejectIfNoRule = true
grails.plugin.springsecurity.successHandler.defaultTargetUrl = '/app/index' // "/" is mapped to "/app/index"
【问题讨论】:
标签: grails spring-security grails-plugin