Grails Spring Security Запомнить меня - PullRequest
3 голосов
/ 15 декабря 2011

У меня есть пользовательский поставщик аутентификации, работающий с REST API, и теперь я хочу реализовать функцию Remember Me.

Вот что у меня есть в Config.groovy:

grails.plugins.springsecurity.providerNames = [
   'zubAuthenticationProvider',
   'rememberMeAuthenticationProvider'
]
grails.plugins.springsecurity.auth.loginFormUrl="/login"
grails.plugins.springsecurity.rememberMe.cookieName="example1"
grails.plugins.springsecurity.rememberMe.key="example1"

Я не вижу, что постоянный файл cookie фактически устанавливается при успешном входе в систему. Я что-то упустил в конфиге?

** ОБНОВЛЕНИЕ ** Я могу получить печенье, которое будет создано, если я добавлю:

grails.plugins.springsecurity.rememberMe.persistent = true

Но это приводит к еще одной проблеме - не использовать базу данных для хранения логина.

Заранее спасибо, Тодд

1 Ответ

3 голосов
/ 20 декабря 2011

Ради потомства, я собираюсь со следующим -

Config.groovy

grails.plugins.springsecurity.providerNames = [
   'zubAuthenticationProvider',
   'rememberMeAuthenticationProvider'
]

grails.plugins.springsecurity.rememberMe.cookieName="stackoverflow"
grails.plugins.springsecurity.rememberMe.key="_grails_"
grails.plugins.springsecurity.rememberMe.rememberMe.persistent = true

конф / весна / resources.groovy

userDetailsService(com.zub.security.EgUserDetailsService) {
   grailsApplication = ref('grailsApplication')
}
tokenRepository(com.zub.security.EgPersistentTokenRepository) {
    grailsApplication = ref('grailsApplication')
}

def conf = SpringSecurityUtils.securityConfig
rememberMeServices(PersistentTokenBasedRememberMeServices) {
    userDetailsService = ref("userDetailsService")
    key = conf.rememberMe.key
    cookieName = conf.rememberMe.cookieName
    alwaysRemember = conf.rememberMe.alwaysRemember
    tokenValiditySeconds = conf.rememberMe.tokenValiditySeconds
    parameter = conf.rememberMe.parameter
    useSecureCookie = conf.rememberMe.useSecureCookie // false

    tokenRepository = ref('tokenRepository')
    seriesLength = conf.rememberMe.persistentToken.seriesLength // 16
    tokenLength = conf.rememberMe.persistentToken.tokenLength // 16
}

EgPersistentTokenRepository основан на GormPersistentTokenRepository, но был обновлен для выполнения вызовов REST для функциональности CRUD, а не GORM.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...