如何在c#中使jwt默认令牌作为外部承载无效或销毁?

时间:2018-09-18 12:06:38

标签: c# asp.net-web-api2 jwt

我正在使用Web API并实现了默认的登录行为,即使用jwt身份验证的端点,现在由于要实现注销功能,我面临着无效或销毁jwt令牌的问题。 谁能提出这种情况的逻辑,如何处理JWT令牌过期? 注意:对于登录,GrantResourceOwnerCredentials方法照常使用,它将创建用于身份验证的令牌。

2 个答案:

答案 0 :(得分:1)

一旦您发行了令牌,令牌将一直有效直到令牌过期。

如果您需要注销或使令牌“无效”,则需要执行额外的步骤。

您可以做的是在User表的db中存储SessionId(即guid)。用户登录时,将会话ID与beader令牌一起发送。将此会话ID存储在cookie或sessionStorage或任何其他文件中,并根据每个请求将其发送到服务器。然后,您可以对所有操作进行全局过滤,以检查从客户端发送的SessionId与存储在数据库中的SessionId是否匹配。

然后,如果您需要使令牌无效,然后在用户表中存储一个新的GUID SessionId,当下一个请求到来时它将不匹配,您可以返回401响应。

答案 1 :(得分:0)

如果要使某些令牌无效,则需要将发出的令牌存储在数据库中。

然后,当您验证传入令牌时,将对照这些令牌进行检查。

当您需要使其中一个无效时,只需将其从数据库中删除即可。