我有一个实现了Spring Security Rest的Grails 3应用程序,我可以成功地从我的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
发布于 2018-11-22 07:03:27
你可以这样做..。
class SomeController {
def springSecurityService
def someAction() {
def user = springSecurityService.currentUser
// ...
}
}或者这个..。
class SomeController {
def springSecurityService
def someAction() {
def principal = springSecurityService.principal
String username = principal.username
def authorities = principal.authorities // a Collection of GrantedAuthority
boolean enabled = principal.enabled
// ...
}
}这两个都是直接从https://grails-plugins.github.io/grails-spring-security-core/3.2.x/index.html粘贴的
https://stackoverflow.com/questions/53420767
复制相似问题