Руководитель службы безопасности Spring в Grails - PullRequest
1 голос
/ 06 декабря 2010

Как я могу зарегистрировать Принципала пользователя в моем Log4J Log с Grails?

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

Ответы [ 2 ]

2 голосов
/ 07 декабря 2010

Полагаю, вы должны использовать вложенные диагностические контексты log4j (NDC). См. Соответствующую главу в http://logging.apache.org/log4j/1.2/manual.html.

Идея состоит в том, чтобы создать фильтр Grails, который будет управлять данными NDC (push / pop) при каждом запросе и использовать% x в шаблоне вашего регистратора, см. http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/PatternLayout.html.

Тем самым вы отделили бремя ведения журнала от входа в систему контроллера / службы.

1 голос
/ 06 декабря 2010

Как задокументировано здесь , вы можете использовать grails.plugins.springsecurity.SpringSecurityService служебный класс для этой цели.

class SomeController {    
     def springSecurityService    
     def someAction = { 
         def principal = springSecurityService.principal 
         ...
     }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...