在身份验证回复中添加附加信息

Posted

技术标签:

【中文标题】在身份验证回复中添加附加信息【英文标题】:Add additional info in authetication reply 【发布时间】:2018-10-30 22:27:12 【问题描述】:

使用 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.

【问题讨论】:

【参考方案1】:

您可以覆盖 accessTokenJsonRenderer bean

    创建类:
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)

【讨论】:

是不是 accessTokenJsonRenderer 而不是 restAuthenticationTokenJsonRenderer?

以上是关于在身份验证回复中添加附加信息的主要内容,如果未能解决你的问题,请参考以下文章