У меня есть приложение Grails 3 с реализованным Spring Security Rest, я могу успешно пройти аутентификацию из своего приложения Angular2, а с помощью @Secured (), примененной к контроллерам, можно контролировать, к каким областям приложения можно получить доступ.Итак, учитывая это, я знаю, что аутентификация и авторизация работает.
Я пытаюсь получить имя пользователя, вошедшего в систему, которое использовалось для аутентификации.
Я пытался Authentication authentication = SecurityContextHolder.getContext().getAuthentication()
, это ноль.
Я пытался Principal principal = request.getUserPrincipal()
это также нуль.
Вот мое application.groovy
grails.plugin.springsecurity.providerNames = ['customADAuthProvider']
grails.plugin.springsecurity.successHandler.alwaysUseDefault = true
grails.plugin.springsecurity.userLookup.userDomainClassName = 'User'
grails.plugin.springsecurity.userLookup.authorityJoinClassName = 'UserRole'
grails.plugin.springsecurity.authority.className = 'Role'
grails.plugin.springsecurity.controllerAnnotations.staticRules = [
[pattern: '/', access: ['permitAll']],
[pattern: '/error', access: ['permitAll']],
[pattern: '/index', access: ['permitAll']],
[pattern: '/index.gsp', access: ['permitAll']],
[pattern: '/shutdown', access: ['permitAll']],
[pattern: '/assets/**', access: ['permitAll']],
[pattern: '/**/js/**', access: ['permitAll']],
[pattern: '/**/css/**', access: ['permitAll']],
[pattern: '/**/images/**', access: ['permitAll']],
[pattern: '/**/favicon.ico', access: ['permitAll']]
]
grails.plugin.springsecurity.filterChain.chainMap = [
[pattern: '/assets/**', filters: 'none'],
[pattern: '/**/js/**', filters: 'none'],
[pattern: '/**/css/**', filters: 'none'],
[pattern: '/**/images/**', filters: 'none'],
[pattern: '/**/favicon.ico', filters: 'none'],
[pattern: '/api/**', filters: 'JOINED_FILTERS,-anonymousAuthenticationFilter,-exceptionTranslationFilter,-authenticationProcessingFilter,-securityContextPersistenceFilter,-rememberMeAuthenticationFilter']
]
grails.plugin.springsecurity.rest.logout.endpointUrl = '/api/logout'
Независимо от того, что я пытаюсь, я никогда не смогу получить объект аутентификации или основной объект для получения имени пользователя или каких-либо сведений о пользователе.
Я использую spring-security-rest:2.0.0.RC1
, а Grails 3.3.6