2013-06-27 1 views
1

В моем приложении grails я хочу знать, когда это первый логин после успешного регистрации пользователя. Я использую плагин основного ядра весны. Каков наилучший способ выполнения этого?Обнаружение 1-го соединения после регистрации в grails

+0

http://grails.1312388.n4.nabble.com/How-to-configure-Spring-Security-redirect-url-after-login-td3235600.html –

ответ

2

Если вы не зарегистрировали пользователя автоматически после регистрации или не знаете, что пользователь будет вручную войти в систему сразу после регистрации, вам, вероятно, придется сохранять что-то вроде «lastLoginDate» с каждым пользователем. Затем просто проверьте, пусто ли это значение (это их первый вход в систему), иначе просто обновите дату входа каждый раз, когда они войдут в систему.

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

ОБНОВЛЕНО на основе комментариев

grails.plugins.springsecurity.onInteractiveAuthenticationSuccessEvent = { e, appCtx -> 
    // fired after successful authentication 
    // and AFTER user info provided to SpringSecurityService 

    // to get currentUser, you can use the following 
    def springSecurityService = appCtx.getBean("springSecurityService") 
    def user = springSecurityService.currentUser 
    ... 
} 


or 

grails.plugins.springsecurity.onAuthenticationSuccessEvent = { e, appCtx -> 
    // fired after successful authentication 
    // and BEFORE user info provided to SpringSecurityService 
    // (e.g. springSecurityService.currentUser == null) 
} 

Более подробную информацию можно найти на SpringSecurity documentation под событиями.

+0

можно использовать сервис в config.groovy , поэтому я могу вызвать springSecurityService.getCurrentUser()? –

+0

Я не уверен, но если вы можете вставить SpringSecurityService - обратите внимание, что SpringSecurityService не будет иметь currentUser для пользователя в onAuthenticationSuccessEvent. Вместо этого вам нужно будет использовать onInteractiveAuthenticationSuccessEvent. – ikumen

+0

Я попытался поместить это в свой config.groovy, но он не работает, когда я вхожу в систему, код этого метода не executed –