【发布时间】:2021-04-16 16:17:39
【问题描述】:
我正在使用 web API .net core 3.1,我的情况是,当用户注销时,我会将用户的 JWT 令牌放入存储在数据库中的黑名单中,这样即使 JWT 令牌也无法访问系统虽然还没有过期。
目前,我将'CheckJWTTokenInBlacklist'函数放在每个API函数中,如下所示。
[Authorize]
[HttpPost]
public ActionResult Add(OrderRequest req)
{
if (ModelState.IsValid)
{
string token = HttpContext.Response.Headers["Authorization"];
if (_coffeeToken.CheckJWTTokenInBlacklist(token) == false) //Check whether the token is blacklisted.
{
//token is not in blacklist
}
else
{
// token is in blacklist
}
}
return BadRequest(ModelState);
}
我认为这不是最好的方法,因为每个 API 都需要 JWT 令牌,我必须设置上述检查功能。有没有更好的方法? 谢谢!!
【问题讨论】:
-
感谢您的回答,我在您的链接中看到 JWT 令牌将在 startup.cs 文件中进行验证,但在我的情况下,我将检查 jwt 令牌是否在存储在数据库中的黑名单中或不?如果我声明一个对象来与数据库通信,那就不好了,因为我正在使用依赖注入。
-
您可以使用内存缓存并每次都访问它,这不是一个答案,但会发布一个答案,以便我可以共享代码
标签: c# .net asp.net-core jwt-auth