Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用grails spring security rest插件登录时获取用户详细信息_Grails_Spring Security Rest - Fatal编程技术网

使用grails spring security rest插件登录时获取用户详细信息

使用grails spring security rest插件登录时获取用户详细信息,grails,spring-security-rest,Grails,Spring Security Rest,我正在使用GrailsSpring安全插件。当我登录时,我会得到用户名、令牌和角色作为json响应。除了这些属性之外,我还想获得一些其他属性,如firstname、lastname等。在使用grails spring security rest插件登录应用程序时,如何将这些值作为json响应获取?您可以添加令牌声明,我通常建议不要修改插件代码,但是 您可以通过在中添加新索赔来添加所需的详细信息 AbstractJwtTokenGenerator(或者最好覆盖它) 注意:claimsSet.set

我正在使用GrailsSpring安全插件。当我登录时,我会得到用户名、令牌和角色作为json响应。除了这些属性之外,我还想获得一些其他属性,如firstname、lastname等。在使用grails spring security rest插件登录应用程序时,如何将这些值作为json响应获取?

您可以添加令牌声明,我通常建议不要修改插件代码,但是

您可以通过在中添加新索赔来添加所需的详细信息

AbstractJwtTokenGenerator
(或者最好覆盖它)

注意:claimsSet.setSubject(details.username)中的主题已包含用户名,根据以下内容:

如果要在JSON响应中呈现其他信息, 你必须:

  • 配置另一个userDetailsService bean,用于检索所需的其他信息,并将其放入主体对象中

  • 配置另一个accessTokenJsonRenderer,从restAuthenticationToken.principal对象读取该信息


关于和的其他信息

据我所知,您需要向令牌添加声明和用户详细信息,您可以使用
springSecurityService?.currentUser
,并从中获取用户详细信息在登录时,我想获取详细信息,而不是再次请求登录user@Jagadeesh您解决了这个问题吗?没有。如果本地存储中的用户对象为空,我会单独调用rest。谢谢。我试试这个
JWTClaimsSet generateClaims(UserDetails details, String serializedPrincipal, Integer expiration) {
        JWTClaimsSet claimsSet = new JWTClaimsSet()
        claimsSet.setSubject(details.username)

        log.debug "Setting expiration to ${expiration}"
        Date now = new Date()
        claimsSet.setIssueTime(now)
        use(TimeCategory) {
            claimsSet.setExpirationTime(now + expiration.seconds)
        }

        claimsSet.setCustomClaim('roles', details.authorities?.collect { it.authority })
        claimsSet.setCustomClaim('principal', serializedPrincipal)
        //claimsSet.setCustomClaim('username', details.getUsername()) //added customized user name claim
        log.debug "Generated claim set: ${claimsSet.toJSONObject().toString()}"
        return claimsSet
    }