2015-12-21 106 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

相關問題