jwt token注销_如何在注销时销毁JWT令牌?
6 个答案:
答案 0 :(得分:42)
JWT存储在浏览器上,因此删除在客户端删除cookie的令牌
如果您还需要在服务器端到期之前使令牌无效,例如帐户已删除/阻止/暂停,密码已更改,权限已更改,用户已由管理员注销,请查看Invalidating JSON Web Tokens一些公共技术,如创建黑名单或旋转令牌
答案 1 :(得分:7)
创建令牌后,无法手动使令牌失效。因此,实际上无法像在会话中那样在服务器端使用JWT注销。
JWT是无状态的,这意味着您应该将所需的所有内容存储在有效负载中,并跳过对每个请求的数据库查询。但是,如果您计划具有严格的注销功能,即使您已从客户端清除了令牌,也无法等待令牌自动过期,那么您可能需要忽略无状态逻辑并执行一些查询。那么有什么解决方案?
在令牌上设置合理的到期时间
注销后从客户端删除存储的令牌
在每个授权请求上针对黑名单查询提供的令牌
黑名单
所有不再有效且尚未过期的令牌的“黑名单”。您可以在文档上使用带有TTL选项的数据库,该数据库将设置为令牌过期之前剩余的时间。
Redis
Redis是黑名单的一个不错的选择,它将允许在内存中快速访问该列表。然后,在针对每个授权请求运行的某种中间件中,您应该检查提供的令牌是否在黑名单中。如果是这样,则应抛出未授权的错误。如果不是,则放手,JWT验证将处理它,并确定它是否已过期或仍处于活动状态。
答案 2 :(得分:1)
您可以在令牌中添加“发出时间”,并为服务器上的每个用户维护“上次注销时间”。在检查令牌有效性时,还要在“上次注销时间”之后检查“签发时间”。
答案 3 :(得分:1)
从客户端注销,最简单的方法是从浏览器的存储中删除令牌。
但是,如果您想销毁节点服务器上的令牌,该怎么办-
JWT软件包的问题在于它没有提供任何方法或方法来破坏令牌。
因此,为了销毁服务器端的令牌,您可以使用jwt-redis软件包而不是JWT
此库(jwt-redis)完全重复了库jsonwebtoken的全部功能,但有一个重要的补充。 Jwt-redis允许您将令牌标签存储在redis中以验证有效性。 Redis中没有令牌标签会使令牌无效。要销毁jwt-redis中的令牌,有一种destroy方法
它以这种方式工作:
1)从npm安装jwt-redis
2)要创建-
var redis = require('redis');
var JWTR = require('jwt-redis').default;
var redisClient = redis.createClient();
var jwtr = new JWTR(redisClient);
jwtr.sign(payload, secret)
.then((token)=>{
// your code
})
.catch((error)=>{
// error handling
});
3)要验证-
jwtr.verify(token, secret);
4)要摧毁-
jwtr.destroy(token)
注意:您可以像在JWT中提供的一样,在令牌登录期间提供expiresIn。
答案 4 :(得分:0)
在控制器中创建注销功能,如下所示:
public function logout() {
Auth::guard('api')->logout();
return response()->json([
'status' => 'success',
'message' => 'logout'
], 200);
}
答案 5 :(得分:0)
虽然其他答案为各种设置提供了详细的解决方案,但这可能会帮助正在寻找一般答案的人。
共有三个常规选项,选择一个或多个:
在客户端,使用javascript从浏览器中删除cookie。
在服务器端,将cookie值设置为空字符串或无用的东西(例如"deleted"),并将cookie过期时间设置为过去的时间。
在服务器端,更新存储在数据库中的刷新令牌。使用此选项可从所有已登录用户的设备中注销用户(其刷新令牌将无效,因此他们必须再次登录)。
jwt token注销_如何在注销时销毁JWT令牌?相关推荐
- jwt token注销_辩证的眼光搞懂 JWT 这个知识点
什么是 JWT 概念 JSON Web Token(简称 JWT)是目前最流行的跨域认证解决方案. JWT 原理 JWT 组成 JWT 由三部分组成:Header,Payload,Signature ...
- jwt token 太长_理解 JWT 鉴权的应用场景及使用建议
JWT 介绍 JSON Web Token(JWT)是一个开放式标准(RFC 7519),它定义了一种紧凑(Compact)且自包含(Self-contained)的方式,用于在各方之间以JSON对象 ...
- 使用identity+jwt保护你的webapi(二)——获取jwt token
前言 上一篇已经介绍了identity在web api中的基本配置,本篇来完成用户的注册,登录,获取jwt token. 开始 开始之前先配置一下jwt相关服务. 配置JWT 首先NuGet安装包: ...
- IdentityServer4实战 - 谈谈 JWT Token 的安全策略
一.前言 众所周知,IdentityServer4 默认支持两种类型的 Token,一种是 Reference Token,一种是 JWT Token .前者的特点是 Token 的有效与否是由 To ...
- 一文详解jwt token以及sprig boot如何整合实现 jwt token操作
文章目录 1. jwt是什么 2. jwt的来源 2.1 传统的session认证 2.2 基于token的鉴权机制 3. JWT的构成 3.1 header 3.2 playload 3.3 sig ...
- jwt token注销_退出登录时怎样实现JWT Token失效?
退出登录时,如果不使JWT Token失效会产生如下2个问题 问题1-未过期的token还是可以用 要是用户在多个设备登录了,而且本地保存了token.当一个地方丢弃token,但是这个token要是 ...
- jwt token注销_【原创精选】OAuth 2.0+JWT+spring security完成认证授权-生产级-附带源码...
前言导读 分析一下为什么要用OAuth2和JWT来做 1. **单点登录(SSO)**方案单击登录方案是最常见的解决方案,但单点登录需要每个与用户交互的服务都必须与认证服务进行通信,这不但会造成重复, ...
- jwt token注销_详解JWT token心得与使用实例
本文你能学到什么? token的组成 token串的生成流程. token在客户端与服务器端的交互流程 Token的优点和思考 参考代码:核心代码使用参考,不是全部代码 JWT token的组成 头部 ...
- jwt token注销_JWT生成token及过期处理方案
## 业务场景 在前后分离场景下,越来越多的项目使用token作为接口的安全机制,APP端或者WEB端(使用VUE.REACTJS等构建)使用token与后端接口交互,以达到安全的目的.本文结合sta ...
最新文章
- python文本编码转换_Python: 转换文本编码
- 企业网络推广之下滴滴造车野心不减,“造车时代”想入局恐需技术先行
- 【Android 逆向】Android 进程注入工具开发 ( EIP 寄存器指向 dlopen 函数 | ESP 寄存器指向栈内存 | 调试程序收回目标进程控制权 )
- 解决 Windows To Go U盘没有盘符的问题
- 手机html5雪花飘落,如何使用HTML5canvas实现雪花飘落
- 防范攻击 加强管控 - 数据库安全的16条军规
- Julia面向对象(多重派发)
- FastJSON、Gson和Jackson性能对比
- squid 简单介绍及代理说明
- php下memcache结合数据库
- “你的深度学习框架包含15个漏洞”,360说 | 附论文
- 微pe工具箱 系统安装教程_微PE工具箱 V2.0正式版(附安装系统教程)
- 自备ACM模板 —— 数学篇
- rc时间常数定义_时间常数RC的计算方法
- 爬取校花图片保存到本地文件夹下(requests+re)
- android layout.inflater,LayoutInflater.inflate详解
- jq插件之bxSlider
- php开发微信jssdk录音功能,微信 JS-SDK 录音功能开发
- quantenna测试RF射频性能简单说明
- java中double与Double的区别
热门文章
- php损坏的图像,php – 复制后图像损坏
- [Python] os.poen和subprocess.popen
- 【大数据】华为内部狂转好文,大数据,看这一篇就够了!
- php动态模拟时钟,使用canvas制作简易实时动态时钟
- 7.Libgdx扩展学习之Box2D_距离关节 旋转关节
- 小米k40开启热点后,计算机链接不上——AP
- android中clip的使用
- dhcp服务器在哪个位置,dhcp服务器是什么 dhcp服务器怎么设置【步骤教程】
- Worm.Win32.Delf.bg专杀【萧心论坛发】
- LinkedList的push add offer操作有什么不同