2015-12-21 84 views
1

我正在使用grails spring安全插件。当我登录时,我获取用户名和标记和角色作为json响应。随着这些属性,我想获得一些其他的属性,如名字,姓氏等。我怎样才能得到这些值作为JSON响应登录到应用程序使用Grails的春天安全休息插件?当使用grails spring security rest插件登录时获取用户详细信息

+0

据我知道你需要索赔添加到令牌用户的详细信息,您可以用'springSecurityService?.currentUser',并从中获取用户详细信息有 – shaydel

+0

在登录时本身我想得到的细节,而不是使另一个请求登录用户 – Jagadeesh

+0

@Jagadeesh你解决了吗? – mrabbani

回答

1

可以添加标记的权利要求,我一般会建议对修改所述插件代码,但

可以(通过重写它或优选地)通过在

AbstractJwtTokenGenerator增加新的权利要求添加期望的细节

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 
    } 

注:主题在claimsSet.setSubject(details.username)已经包含了用户名

+1

谢谢。我会试试这个 – Jagadeesh

0

docs

如果你想呈现更多的信息在你的JSON响应, 你必须:

  • 配置替代的UserDetailsS​​ervice的bean获取你想要的更多信息,以及把它放在一个主要的对象。

  • 配置从restAuthenticationToken.principal对象中读取该信息的替代accessTokenJsonRenderer。

附加信息有关userDetailsServiceaccessTokenJsonRenderer

相关问题