在身份验证回复中添加其他信息
Add additional info in authetication reply
使用 Grails 3.3.5 和 Spring-security-rest 2.0.0-RC1 开发 REST API 应用程序。
当我使用 /api/login 登录时,我得到的结果是正确的:
{
"username": "name.surname@acme.com",
"roles": [
"ROLE_USER"
],
"access_token": "qgsbpk05jfrbf33xx08m8r4govkg53d1"
}
我想在响应中添加其他信息,例如用户的名字和姓氏。谢谢
更新
感谢 Evgeny 为我指明了正确的方向并阅读了我还实现了 UserDetailsService 的手册。
来自手册:
If you want to render additional information in your JSON response,
you have to:
Configure an alternative userDetailsService bean that retrieves the additional information you want, and put it in a principal object.
Configure an alternative accessTokenJsonRenderer that reads that information from the restAuthenticationToken.principal object.
您可以覆盖 accessTokenJsonRenderer bean
- 创建 class:
class MyRestAuthTokenJsonRenderer implements AccessTokenJsonRenderer {
@Override
String generateJson(AccessToken accessToken){
// create response, see DefaultAccessTokenJsonRenderer.groovy from https://github.com/alvarosanchez/grails-spring-security-rest
return your_formatted_json_response
}
}
- 覆盖 resources.groovy
中的 bean
beans = {
accessTokenJsonRenderer(MyRestAuthTokenJsonRenderer)
}
使用 Grails 3.3.5 和 Spring-security-rest 2.0.0-RC1 开发 REST API 应用程序。
当我使用 /api/login 登录时,我得到的结果是正确的:
{
"username": "name.surname@acme.com",
"roles": [
"ROLE_USER"
],
"access_token": "qgsbpk05jfrbf33xx08m8r4govkg53d1"
}
我想在响应中添加其他信息,例如用户的名字和姓氏。谢谢
更新 感谢 Evgeny 为我指明了正确的方向并阅读了我还实现了 UserDetailsService 的手册。 来自手册:
If you want to render additional information in your JSON response, you have to:
Configure an alternative userDetailsService bean that retrieves the additional information you want, and put it in a principal object. Configure an alternative accessTokenJsonRenderer that reads that information from the restAuthenticationToken.principal object.
您可以覆盖 accessTokenJsonRenderer bean
- 创建 class:
class MyRestAuthTokenJsonRenderer implements AccessTokenJsonRenderer { @Override String generateJson(AccessToken accessToken){ // create response, see DefaultAccessTokenJsonRenderer.groovy from https://github.com/alvarosanchez/grails-spring-security-rest return your_formatted_json_response } }
- 覆盖 resources.groovy 中的 bean
beans = { accessTokenJsonRenderer(MyRestAuthTokenJsonRenderer) }