没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
试读
13页
使用 JWT(JSON Web 令牌)实现登录身份验证和令牌续订。它将 JWT 与基于会话的身份验证进行了比较,并强调了每种方法的差异、优点和缺点。本文档介绍了基于会话的方法和基于 JWT 的方法的身份验证过程。它还讨论了与 JWT 相关的安全性、性能和过期问题。该文档最后建议使用 JWT 进行身份验证,尤其是在分布式环境中。它提供了用于生成和解析 JWT 令牌的代码示例,以及使用 Redis 实现令牌存储。该文档还包括用于登录、注销和密码更新功能的代码片段。 大意: - 基于会话的身份验证和基于 JWT 的身份验证之间的比较 - 基于会话和基于 JWT 的方法的身份验证过程 - 智威汤逊的优缺点 - JWT 的安全问题 - JWT 的性能注意事项 - JWT 的代币续订策略 - 使用 JWT 进行身份验证的建议 - 用于生成和解析 JWT 令牌的代码示例 - 使用 Redis 实现令牌存储 - 用于登录、注销和密码更新功能的代码片段
资源推荐
资源详情
资源评论
作者:何甜甜在吗
链接:https://juejin.cn/post/69 3 27024 19344 16 2823
链接:https://juejin.cn/post/6932702419344162823
过去这段时间主要负责了项目中的用户管理模块,用户管理模块会涉及到加密及认
证流程,加密已经在前面的文章中介绍了,可以阅读用户管理模块:如何保证用户
数据安全。
今天就来讲讲认证功能的技术选型及实现。技术上没啥难度当然也没啥挑战,但是
对一个原先没写过认证功能的菜鸡甜来说也是一种锻炼吧
技术选型
要实现认证功能,很容易就会想到JWT或者session,但是两者有啥区别?各自的优缺
点?应该Pick谁?夺命三连
区别
基于session和基于JWT的方式的主要区别就是用户的状态保存的位置,se ssion是保存
在服 务 端的,而JWT是保 存在 客 户端 的。
认证流程
基于 session的认 证流 程
用户在浏览器中输入用户名和密码,服务器通过密码校验后生成一个session并保存到数据
库
服务器为用户生成一个sessionId,并将具有sesssionId的cookie放置在用户浏览器中,在后
续的请求中都将带有这个cookie信息进行访问
服务器获取cookie,通过获取cookie中的sessionId查找数据库判断当前请求是否有效
基于 JWT的认证 流 程
用户在浏览器中输入用户名和密码,服务器通过密码校验后生成一个token并保存到数据库
前端获取到token,存储到cookie或者local storage中,在后续的请求中都将带有这个token
信息进行访问
服务器获取token值,通过查找数据库判断当前token是否有效
优缺点
JWT保存在客户端,在分布式环境下不需要做额外工作。而session因为保存在服务端,分布
式环境下需要实现多机数据共享
session一般需要结合Cookie实现认证,所以需要浏览器支持cookie,因此移动端无法使用
session认证方案
安全 性
JWT的payload使用的是base64编码的,因此在JWT中 不能 存 储 敏 感数 据 。而session的信
息是存在服务端的,相对来说更安全
如果在JWT中存储了敏感信息,可以解码出来非常的不安全
性能
经过编码之后JWT将非常长,cookie的限制大小一般是4k,cookie很可能放不下,所以JWT
一般放在local storage里面。并且用户在系统中的每一次http请求都会把JWT携带在Header
里面,HTTP请求的Header可能比Body还要大。而sessionId只是很短的一个字符串,因此使
用JWT的HTTP请求比使用session的开销大得多
一次 性
无状态是JWT的特点,但也导致了这个问题,JWT是一次性的。想修改里面的内容,就必
须签发一个新的JWT
无法废弃 一旦签发一个JWT,在到期之前就会始终有效,无法中途废弃。若想废弃,一种
常用的处理手段是结合redis。另外,最新面试题整理好了,大家可以在 Java面试库小
程序在线刷题。
续签 如果使用JWT做会话管理,传统的cookie续签方案一般都是框架自带的,session有效
期30分钟,30分钟内如果有访问,有效期被刷新至30分钟。一样的道理,要改变JWT的有
效时间,就要签发新的JWT。最简单的一种方式是每次请求刷新JWT,即每个HTTP请求都
返回一个新的JWT。这个方法不仅暴力不优雅,而且每次请求都要做JWT的加密解密,会带
剩余12页未读,继续阅读
资源评论
鱼小旭
- 粉丝: 616
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功