Изменение даты последнего входа в Grails с помощью Spring Security - PullRequest
5 голосов
/ 03 мая 2011

В моем Config.groovy я использовал:

grails.plugins.springsecurity.useSecurityEventListener = true

grails.plugins.springsecurity.onInteractiveAuthenticationSuccessEvent = { e, appCtx ->
    User.withTransaction {
        def user = User.findById(appCtx.springSecurityService.principal.id)
        if(!user.isAttached())
            user.attach()
        user.lastLoginDate = new Date()
        user.save(flush: true, failOnError: true)
    }
}

У моего домена пользователя есть это поле, и я не получаю никаких ошибок при входе в систему, однако поле не обновляется.

Я пытался отладить все из org.hibernate, но я не смог найти update или других соответствующих утверждений.

Есть ли что-то еще, что мне нужно добавить в любом месте, чтобы получитьэто работает?

Для записи:

  • Grails 1.3.7
  • Spring Security Core 1.1.2
  • Hibernate 1.3.7

Ответы [ 2 ]

5 голосов
/ 03 мая 2011

Хорошо, ответ был прост. Я забыл название пакета, чтобы он не нашел User.

Так что этот работает, если ваш User объект находится в пакете org.test:

org.test.User.withTransaction {
      def user = org.test.User.get(appCtx.springSecurityService.principal.id)
      user.lastLoginDate = new Date()
      user.save(failOnError: true)
}
0 голосов
/ 03 мая 2011

Какая версия ru использует ядро ​​безопасности Spring ??Посмотрите на этот вопрос и соответствующий ответ, предоставленный автором Spring Security .... Может быть, вам нужно обновить версию Spring Security?

:: UPDATE ::

В этом сообщении есть та же проблема, что и у вас, надеюсь, вы найдете решение, изучив его ...

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