jwt - User.Identity.GetUserId 返回用户名而不是 wso2 令牌中的用户 ID
问题描述
我正在使用 WSO2 身份服务器并在生成令牌之后。当我使用令牌调用 API 时,我得到 User.Identity.GetUserId() 作为用户名,这在我们的案例中发生在电子邮件中,而不是定义的唯一 userId。我希望 GetUserId 应该返回用户 ID。我得到的有效载荷如下所示: namid 是这里的用户 ID。
{
"sub": "supriyad19@getnada.com",
"aud": "z21RCaZ_ehgaO_5mO8YgxkPUdqMa",
"unique_name": "supriyad19@getnada.com",
"nbf": 1616692647,
"role": "Admin",
"azp": "z21RCaZ_ehgaO_5mO8YgxkPUdqMa",
"scope": "email openid profile",
"iss": "https://demo-identity.onblick.com/oauth2/token",
"nameid": "6ee0b06f-e9e4-4f91-87ea-8c1310e9c505",
"exp": 1616696247,
"iat": 1616692647,
"jti": "9fca536e-d753-4f35-b7b8-95f1384891ce"
}
[Route("Employee/ExportWorkforceToCSV")]
[HttpPost]
[Authorize(Roles = "HRManager")]
public async Task<string> ExportWorkforce(ExportRequestModel model)
{
var userId = User.Identity.GetUserId();
这里 JWT 令牌应该提供 sub 作为 userId,它是存储在 db 中的唯一标识 id。User.Identity.GetUserId(); 提供 userId 并在此 Id 的帮助下进一步进行 db 调用以获取详细信息。
解决方案
推荐阅读
- apache-flink - Flink taskmanager out of memory 和内存配置
- python - Windows 10 上的 pip install torchvision 错误
- r - 定义四分位数及其名称
- kubernetes - storageClass kubernetes.io/no-provisioner 是否适用于多节点集群?
- vba - Excel VBA 向 SumIf 添加新行
- jakarta-ee - 消息驱动的 bean 没有收到任何消息
- postgresql - 如何使用 Hibernate Envers 查询图表数据
- prestashop - 如何在 prestashop 中使用模板视图?
- python - Python 3:使用 Rscript 从子进程捕获矩阵返回
- stack - Stack of Plates:破解编码面试