首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Grails 3,Spring Security登录后的Rest用户名

Grails 3,Spring Security登录后的Rest用户名
EN

Stack Overflow用户
提问于 2018-11-22 05:33:35
回答 1查看 356关注 0票数 0

我有一个实现了Spring Security Rest的Grails 3应用程序,我可以成功地从我的Angular2应用程序进行身份验证,并且通过对控制器应用@Secured()可以控制应用程序的哪些区域可以被访问。因此,鉴于此,我知道身份验证和授权正在工作。

我正在尝试检索用于身份验证的已登录用户的用户名。

我已经尝试过Authentication authentication = SecurityContextHolder.getContext().getAuthentication()了,它是空的。

我尝试过Principal principal = request.getUserPrincipal(),它也是空的。

这是我的application.groovy

代码语言:javascript
复制
    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.RC1Grails 3.3.6

EN

回答 1

Stack Overflow用户

发布于 2018-11-22 07:03:27

你可以这样做..。

代码语言:javascript
复制
class SomeController {

    def springSecurityService

    def someAction() {
        def user = springSecurityService.currentUser
            // ...
    }
}

或者这个..。

代码语言:javascript
复制
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粘贴的

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53420767

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档