【问题标题】:Grails Spring Security RequestMap not matching /Grails Spring Security RequestMap 不匹配 /
【发布时间】: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


    【解决方案1】:

    似乎我无法保护“/”,谷歌搜索了好几天,但没有保护“/”的示例。

    我所做的是:

    1. 将映射从“/”更改为“/app/index”,将“/”更改为“/login”
    2. 保留刚刚新建的RequestMap(url: '/app/index', configAttribute: 'ROLE_ADMIN').save()

    因此,在未登录的情况下访问应用程序会将我重定向到“/login”。 如果我访问正在登录的“/”,它会重定向到“/app/index”(defaultTargetUrl)。

    这是预期的行为,但我不得不取消在用户访问我的 Web 根目录“/”时显示仪表板的要求,现在我的用户在 URL 中看到的是“/app/index”而不是“/”。

    【讨论】:

      猜你喜欢
      • 2014-10-15
      • 2012-06-26
      • 2014-10-06
      • 2015-03-20
      • 1970-01-01
      • 2015-04-22
      • 2019-03-25
      • 1970-01-01
      • 2017-02-22
      相关资源
      最近更新 更多