1

我使用带有自定义身份验证方法的 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?

4

2 回答 2

2

思路:让spring security记住我服务知道应该考虑登录成功。

  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 中,添加以下内容

    grails.plugins.springsecurity.rememberMe.alwaysRemember = true
    
于 2013-01-09T17:36:13.233 回答
0

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

于 2013-01-01T19:34:07.343 回答