gpt4 book ai didi

Grails REST 安全性 - 将用户 ID 添加到 token

转载 作者:行者123 更新时间:2023-12-02 14:14:26 24 4
gpt4 key购买 nike

我想将用户 ID 字段添加到从/api/login 返回的 token 中

目前是:

{
"username": "user",
"roles": [
"ROLE_USER"
],
"token_type": "Bearer",
"access_token": "eyJhbGciOiJIUzI1NiJ9.2uk2YoHsyd7bqUdtUYN19ef..",
"expires_in": 3600,
"refresh_token": "eyJhbGciOiJIUzI1NiJ9.eyJwcmluY2lwYWwiOiJINH.."
}

我需要:
{
"id": "1",
"username": "user",
"roles": [
"ROLE_USER"
],
"token_type": "Bearer",
"access_token": "eyJhbGciOiJIUzI1NiJ9.2uk2YoHsyd7bqUdtUYN19ef..",
"expires_in": 3600,
"refresh_token": "eyJhbGciOiJIUzI1NiJ9.eyJwcmluY2lwYWwiOiJINH.."
}

目标 - 带有用户 ID 的查询,例如 POST/api/something
还有其他方法吗?
提前致谢

最佳答案

你没有提到 Grails 版本,所以我发布了我为 Grails 2.4.4 实现的答案

您需要实现 AccessTokenJsonRenderer 的第一件事在 src/groovy 下创建的自定义类中的接口(interface)如下所示。

import grails.plugin.springsecurity.SpringSecurityUtils
import grails.plugin.springsecurity.rest.token.AccessToken
import grails.plugin.springsecurity.rest.token.rendering.AccessTokenJsonRenderer
import groovy.json.JsonBuilder
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.security.core.GrantedAuthority

/**
* Created by Prakash Thete on 17/04/2018
*/
class CustomAppRestAuthTokenJsonRenderer implements AccessTokenJsonRenderer {

@Override
String generateJson(AccessToken accessToken){

// Add extra custom parameters if you want in this map to be rendered in login response
Map response = [
id : accessToken.principal.id,
username : accessToken.principal.username,
access_token : accessToken.accessToken,
token_type : "Bearer",
refresh_token: accessToken.refreshToken,
roles : accessToken.authorities.collect { GrantedAuthority role -> role.authority }
]

return new JsonBuilder( response ).toPrettyString()
}
}

您需要在 resources.groovy 中创建自定义类的 bean 的第二件事,如下所示
// For overriding the token json renderer
accessTokenJsonRenderer(CustomAppRestAuthTokenJsonRenderer)

现在点击 api/login您将收到用户的 ID 以及其他详细信息。

希望这可以帮助 !

关于Grails REST 安全性 - 将用户 ID 添加到 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49715689/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com