authentication - 如何使 Grails Spring Security 2.0 中的登录/页面成为初始屏幕?

标签 authentication grails spring-security grails-2.0 grails-plugin

我正在从 grails 2.2.2 迁移到 grails 2.3.4 以避免 2.2.2 中的错误,即 spring 安全属性消息中的文本值未显示,但我遇到了各种问题。以前有用的东西,现在不行了。

问题

当我运行 grails 应用程序时,初始默认页面是 index.gsp 这是标准功能,但在安装和配置 spring 安全核心、spring 安全 ldap 和 spring securiy ui 插件后,我想制作 /login/auth 我的默认页面。

在之前的版本中,我是通过 完成的。 UrlMappings.groovy 通过简单地注释、替换或删除这一行来修改配置文件

"/"(view:"/index")

对于这个
"/"(view:"/login/auth")

我的 Config.groovy 是这样设置的,如果认证成功就带我到首页
grails.plugin.springsecurity.userLookup.userDomainClassName = 'security.Person'
grails.plugin.springsecurity.userLookup.authorityJoinClassName = 'security.PersonAuthority'
grails.plugin.springsecurity.authority.className = 'security.Authority'
grails.plugin.springsecurity.requestMap.className = 'security.Requestmap'
grails.plugin.springsecurity.securityConfigType = 'Requestmap'
grails.plugin.springsecurity.successHandler.defaultTargetUrl = '/home/'

和我在 Bootstrap 中的 Requestmap 条目(如果它们对这个问题有任何重要性,如下所示):
for (String url in [
        '/', '/index', '/index.gsp', '/**/favicon.ico',
        '/**/js/**', '/**/css/**', '/**/images/**',
        '/login', '/login.*', '/login/*',
        '/logout', '/logout.*', '/logout/*']) {
     new Requestmap(url: url, configAttribute: 'permitAll').save()
  }

  new Requestmap(url: '/home/*', configAttribute: 'IS_AUTHENTICATED_FULLY').save()

事实证明,当我这样做时... Eureka 登录/身份验证 应用程序一启动就会出现,但是当我输入正确的身份验证凭据时,它似乎没有进行身份验证,它确实会“轻微闪烁”并再次显示出来。

但是,如果我删除这一行
"/"(view:"/login/auth")

然后把这个放回去
 "/"(view:"/index")

然后当我重新启动应用程序时,我手动到 登录/身份验证 并输入正确的凭据,然后它会正确地将我带到主页。

问题
  • 我是否遗漏了任何可能导致 的任何配置设置?登录/身份验证 第一页(但也允许我进行身份验证)?
  • 我不确定这是否应该是一个单独发布的问题,但现在通过设计登录页面,它是插件的一部分,在它由我的代码生成之前,我可以随意设置样式。我是否必须复制粘贴 登录 Controller Auth.gsp 在我的应用程序中以自定义 View 还是有更好的首选方式?

  • 提前致谢。

    最佳答案

    Spring Security 中的身份验证机制通过在显示登录页面时跟踪引用 URL 来工作。然后在成功登录后重定向到此页面。如果您希望登录页面成为人们看到的第一个页面,只需让根 View 需要身份验证。我假设您的应用程序的大部分(如果不是全部)都需要身份验证。如果是这种情况,您不需要将登录页面设为根 View 。假设 /home/* 下的所有内容被锁定,那么 Spring Security 将检测到并在请求任何安全页面时立即重定向到登录页面。

    长话短说,你让它变得比需要的更难。

    至于你的第二个问题,我相信你只需要在你的应用程序中创建你自己的这些文件版本来自定义它们。

    关于authentication - 如何使 Grails Spring Security 2.0 中的登录/页面成为初始屏幕?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20711601/

    相关文章:

    java - 将 Facebook 身份验证集成到 FacebookApp 中的 Spring Security

    Spring 安全日志或为每个未经授权(访问被拒绝)的请求添加自定义消息

    Java Spring 安全 AccessDecisionManager : UnanimousBased Failed to parse expression 'ROLE_ADMIN, IS_AUTHENTICATED_FULLY'

    RESTful)没有 SSL 和 HMAC 的简单例份验证?

    iphone - 新的 Facebook SDK FBSession sessionOpenWithPermissions

    hibernate - 如何从 Grails Controller 和 View 外部引用 Grails 域类字段?

    grails - 将 Grails 生产模式与 Intellij IDEA 结合使用

    java - Facebook 身份验证不会从第二次开始调用 onActivityResult

    .net - 将角色分配给私有(private)应用程序中的客户端 key

    javascript - Grails View 编解码器不工作 (2.4)