在身份验证回复中添加附加信息
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 为我指明了正确的方向并阅读了我还实现了 UserDetailsService 的手册。 来自手册:
如果您想在 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/身份验证代码流中请求访问令牌的附加声明?