【发布时间】:2021-12-16 09:25:08
【问题描述】:
最近使用 Web API Core 构建了 JWT 令牌。下面需要认真澄清的是细节
如果用户 A 使用浏览器选项卡 A 登录并且请求已处理并生成令牌。如果用户 B 使用浏览器选项卡 B 登录并且请求已被处理并生成令牌。如果我将用户 A 令牌发送给用户 B 会发生什么如何验证此令牌用于此特定登录用户的令牌?
【问题讨论】:
标签: c# .net asp.net-core-webapi
最近使用 Web API Core 构建了 JWT 令牌。下面需要认真澄清的是细节
如果用户 A 使用浏览器选项卡 A 登录并且请求已处理并生成令牌。如果用户 B 使用浏览器选项卡 B 登录并且请求已被处理并生成令牌。如果我将用户 A 令牌发送给用户 B 会发生什么如何验证此令牌用于此特定登录用户的令牌?
【问题讨论】:
标签: c# .net asp.net-core-webapi
我认为您可能误解了身份验证的一般工作方式。
在 JWT Auth 中,“登录”仅表示您发出的请求包含有效的 Bearer 令牌。这意味着发送有效令牌的用户始终是有效的登录用户,无需进一步验证。
但是,如果您需要基于 Authenticated 用户的更多信息,您可以从名为 User 的控制器中的 HttpContext 或 ClaimsPrincipal 属性访问该信息。
例如,
string accessToken = await HttpContext.GetTokenAsync("Bearer", "access_token");
string userName = User.FindFirst(ClaimTypes.Name).Value;
注意:您必须明确存储您希望从 User 属性中检索的声明。
【讨论】:
User 属性包含您存储在访问令牌中的信息,例如 userId、用户名等。我将更新我的答案以反映这些