我的应用程序这个URL映射:Grails的春季安全RequestMap不匹配/
"/"(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 [email protected]:
Username: admin; Password: [PROTECTED]; Enabled: true; AccountNonExpired: true;
credentialsNonExpired: true; AccountNonLocked: true; Granted Authorities: ROLE_ADMIN
auth [email protected]:
Principal: [email protected]:
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 =真实defaultTargetUrl =“/应用/索引”,不知道这是什么影响:
grails.plugin.springsecurity.rejectIfNoRule = true
grails.plugin.springsecurity.successHandler.defaultTargetUrl = '/app/index' // "/" is mapped to "/app/index"