Ведение журнала аудита Grails 4 с защитой Spring не записывает «Субъекта»

#grails #spring-security #grails-plugin #audit-logging

Вопрос:

Я использую Spring Security Rest и плагин ведения журнала аудита Grails. Записи журнала аудита создаются со всей правильной информацией, за исключением actor того, что свойство всегда сохраняется со defaultActor значением.

Ниже приведена моя конфигурация. У кого-нибудь есть какие-нибудь идеи? Что я должен искать? Заранее спасибо, что уделили мне время.

сборка.сортировка

 ext.springSecurityRestVersion = '3.0.0.RC1' dependencies {  ...  compile "org.grails.plugins:spring-security-rest:${springSecurityRestVersion}"  compile "org.grails.plugins:spring-security-rest-gorm:${springSecurityRestVersion}"  compile 'org.grails.plugins:audit-logging:4.0.3'  ... }  

приложение.yml

 grails.plugin.auditLog:  auditDomainClassName: "us.mycompany.api.AuditLogEvent"  logFullClassName: false  defaultActor: "mycompany"  grails.plugin.springsecurity:  userLookup.userDomainClassName: 'us.mycompany.api.Person'  userLookup.authorityJoinClassName: 'us.mycompany.api.PersonRole'  authority.className: 'us.mycompany.api.Role'  filterChain.chainMap:  #Stateless chain  - { pattern: '/**', filters: 'JOINED_FILTERS,-exceptionTranslationFilter,-authenticationProcessingFilter,-securityContextPersistenceFilter,-rememberMeAuthenticationFilter' }  rest.token:  storage.gorm.tokenDomainClassName: 'us.mycompany.api.AuthenticationToken'  validation:  useBearerToken: false  enableAnonymousAccess: true  

Ответ №1:

Когда я отлаживал это, похоже springSecurityService , что зависимость SpringSecurityRequestResolver была нулевой, поэтому мне пришлось явно подключиться SpringSecurityRequestResolver resources.groovy .

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

ресурсы.заводной

 import grails.plugins.orm.auditable.resolvers.SpringSecurityRequestResolver  beans = {  auditRequestResolver(SpringSecurityRequestResolver) {  springSecurityService = ref('springSecurityService')  } }