Grails Последнее поле входа не обновляется - PullRequest
0 голосов
/ 31 января 2012

Это мой класс сущности и код входа в систему. Мой последний логин остается нулевым в БД без исключения. я попытался войти в Hibernate SQL заявления. Похоже, оператор обновления не выполнен ...

лицо:

class Users {
  static hasMany = [farm:Farms,report:Reports,reportMessage:ReportMessages,notifications:Notifications]

  String userName 
  String Password
  Date lastLogin
  String userImage

  static constraints = {
    userName (blank:false, unique:true)
    Password (blank:false)
    userImage (blank:false)
    lastLogin (nullable:true, blank:true)
  }
}

код входа

def login(user)
{
    def status = false;        
    Users u = user;
    Users users = Users.findByUserName(u.userName)
    PasswordCodec pwd = new PasswordCodec();
    u.Password = pwd.encode(u.Password)
    if (users !=null && u.Password.equals(users.Password))
    {
        u.lastLogin = new Date()
        u.save()
        status = true
    }
}

Ответы [ 2 ]

4 голосов
/ 31 января 2012

Похоже, что вы назначаете дату lastLogin объекту команды, переданному с запросом.Сохраненный объект домена не обновляется:

u.lastLogin = new Date()
u.save()

следует заменить на

users.lastLogin = new Date()
users.save()

Надеюсь, это поможет.

2 голосов
/ 01 февраля 2012

Тим прав - имена классов и переменных очень отвлекают.Имена классов домена должны быть единственными.Если вы настаиваете на использовании соглашения глупых имен множественного числа из Rails, вы можете настроить это в блоке сопоставления:

class User {
   ...
   static mapping = {
      table 'users'
   }
}

Использование локальной переменной множественного числа для экземпляра Users также сбивает с толку - Users users = ...вводит в заблуждение, поскольку подразумевает, что users - это набор из более чем одного экземпляра.

Я бы посоветовал вам прекратить усердно работать и использовать Spring Security Core или Shiro.Раскрутка вашей собственной безопасности рискованна и отнимает много времени от реализации реальных функций вашего сайта.

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