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