我的应用有此网址映射:
"/"(controller: 'app', action: 'index')
我正在使用域类在数据库中存储RequestMap实例。 对app / index的访问仅限于某些角色,因此当用户点击/或/ app / index时,会显示登录表单。
如果用户有权查看/或/ app / index登录,则该应用会显示一条消息:"抱歉,您无权查看此页面。& #34; ,所以出于某种原因,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
仅供参考,我定制登录使用user + pass + organization,这就是为什么有UserPassOrgAuthToken而不是标准的UsernamePasswordAuthenticationToken
修改
我也有rejectIfNoRule = true和defaultTargetUrl =' / app / index',不确定这是否会影响任何事情:
grails.plugin.springsecurity.rejectIfNoRule = true
grails.plugin.springsecurity.successHandler.defaultTargetUrl = '/app/index' // "/" is mapped to "/app/index"
答案 0 :(得分:0)
似乎我无法保证“/”,谷歌搜索几天,并没有确保“/".
的例子我做的是:
因此,在未登录的情况下访问应用程序,将我重定向到“/ login”。 如果我访问“/”正在登录,它会重定向到“/ app / index”(defaultTargetUrl)。
这是预期的行为,但是当用户访问我的网络根目录“/”时,我不得不删除显示仪表板的要求,现在我的用户在URL中看到“/ app / index”而不是“/”。