1

使用 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 为我指明了正确的方向并阅读了我还实现了 UserDetailsS​​ervice 的手册。从手册:

如果要在 JSON 响应中呈现附加信息,则必须:

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.
4

1 回答 1

2

您可以覆盖accessTokenJsonRenderer bean

  1. 创建类:
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
    }
}
  1. 覆盖 resources.groovy 中的 bean
beans = {
   accessTokenJsonRenderer(MyRestAuthTokenJsonRenderer)
}
于 2018-05-21T11:41:10.970 回答