вставка записи журнала аудита для входа пользователя - PullRequest
0 голосов
/ 12 марта 2012

Я использую Grails 1.3.7 с плагином аудита. Я хочу зафиксировать событие входа пользователя, например, «user: PSam вошел в систему ..» в журналах, и так как для плагина не определено событие onLoad, я добавляю его в классы домена и заполняю свою собственную запись таблицы аудита в этом событие. Таким образом, в пользовательском домене Grails класс я делаю следующим образом

def onLoad = { 
        try {
         Graaudit aInstance = new Graaudit();
         aInstance.eventType= "User Log in"
         aInstance.eventDescription = "User logged in"
         aInstance.user_id = username
         aInstance.save(flush:true);
          println "username="+username
          println aInstance;
        }
        catch (e){
            println(e.getMessage())
        }
    }

У меня тут две проблемы ... 1) свойство username, определенное в этом доменном классе в качестве атрибута, становится пустым 2) выдает исключение, говорящее: No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here

Есть ли здесь другой подход? а также можете использовать таблицу audi_log плагинов для заполнения записей о моих событиях onLoad ()?

Заранее спасибо

1 Ответ

1 голос
/ 12 марта 2012

Обернуть логику в транзакции:

def onLoad = { 
   Graaudit.withTransaction {
      try {
       Graaudit aInstance = new Graaudit();
       aInstance.eventType= "User Log in"
       aInstance.eventDescription = "User logged in"
       aInstance.user_id = username
       aInstance.save();
        println "username="+username
        println aInstance;
      }
      catch (e){
        println(e.getMessage())
      }
    }
}
...