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

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?

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

在微服务架构中组织用户和身份验证

如何在 laravel 身份验证期间附加到用户创建多个复选框

如何在身份服务器 4/身份验证代码流中请求访问令牌的附加声明?

JAX-WS 标头身份验证

如何在 Spring Security 中为所有请求添加 jwt 身份验证标头?

无法将令牌附加到 API 调用(基本身份验证、AFNetworking)