Grails如何在自定义身份验证中安全地记住我?

时间:2012-12-30 00:52:09

标签: facebook-graph-api grails spring-security oauth-2.0 grails-plugin

我使用grails spring security和自定义身份验证方法进行facebook身份验证:

def auth() {
    ...
}

当我在浏览器中检查cookie时,我可以看到cookie生存期在浏览器会话关闭时完成。仅当我使用插件中的默认登录/身份验证操作时,才设置持久性rememberMe cookie。

我需要更改哪些用自定义身份验证方法登录的用户未在会话之间注销?

对于重新认证,我使用:

def success() {

    // get facebook user data

    springSecurityService.reauthenticate username

    if(springSecurityService.loggedIn) {
            // do something

    }
}

如何设置rememberMe cookie?

2 个答案:

答案 0 :(得分:2)

想法:让春天安全记住我的服务知道它应该考虑成功登录。

  1. 在您的Facebook成功操作中,成功进行身份验证后,请执行以下操作:

    //wire remember me services
    def rememberMeServices
    
    //... in your action:
    springSecurityService.reauthenticate username
    
    def authentication = SecurityContextHolder.context.authentication
    rememberMeServices.loginSuccess(request, response, authentication)
    
  2. 在您的Config.groovy中
  3. ,添加以下内容

    grails.plugins.springsecurity.rememberMe.alwaysRemember = true
    

答案 1 :(得分:0)

在原始auth.gsp的提交和您自定义的auth.gsp之间比较请求的POST参数。将会有一个额外的隐藏字段,缺少该字段。使用Firebug。