【发布时间】:2026-01-27 03:05:01
【问题描述】:
我有一个核心 3.1 web api 是 Vur.js 客户端,它使用 JWT 令牌来保证安全。这一切都很好。我现在必须向解决方案添加第二个 Web api。我的问题是当客户端访问第二个 Web api 并发送它从第一个接收到的令牌时,我将如何验证该令牌?我真的不想建认证服务器。
回答 Chetan Ranpariya
try {
var tokenHandler = new JwtSecurityTokenHandler();
var key = Encoding.ASCII.GetBytes(_appSettings.Secret);
tokenHandler.ValidateToken(token, new TokenValidationParameters {
ValidateIssuerSigningKey = true,
IssuerSigningKey = new SymmetricSecurityKey(key),
ValidateIssuer = false,
ValidateAudience = false,
ClockSkew = TimeSpan.Zero
}, out SecurityToken validatedToken);
var jwtToken = (JwtSecurityToken)validatedToken;
var accountId = int.Parse(jwtToken.Claims.First(x => x.Type == "id").Value);
// attach account to context on successful jwt validation
context.Items["Account"] = await dataContext.Accounts.FindAsync(accountId);
}
【问题讨论】:
-
第一个 Web 应用如何验证令牌?
-
为什么不能在第二个API中使用这个方法?
-
我想我可以,但我需要一种将客户端的“秘密”传递给第二个 API 的方法。每个客户端都有自己的秘密,在他们进行身份验证时生成。
标签: c# .net asp.net-core jwt