016JWT跨域验证

本文介绍了用户认证流程的发展,从基于session的机制到token认证,特别是JWT(JSONWebToken)的使用,强调了其优点如安全性、跨域问题以及性能影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用户认证一般流程
用户向服务器发送用户名和密码
服务器验证通过后,在当前对话(session)保存相关数据,比如登录时间
服务器返回一个session_id,写入用户的cooKie
用户之后的每一次请求,都会通过cookie,将session_id传回服务器
服务器根据session_id,找到之前保存的数据,得知用户身份

但是这样session扩展性不好,多台服务器如何共享session
每次请求服务,分配的服务器可能不同
①session持久化,写入数据库
②数据保存在客户端,每次请求都发回服务器,Token认证就是代表

Token是服务端产生的字符串,是客户端访问资源节课(API)所需的资源凭证,
客户端使用用户名和密码,服务端收到请求,验证
验证成功,服务器会签发一个token病把这个token发送给客户端
客户端收到token后,会存起来,放到cookie或者localstorage
客户端每次请求服务器都要带这个签发的token(令牌)
服务端收到请求,去验证token,验证成功就返回它请求的数据

token方法服务器不存数据,因此减轻压力
但是解析token需要时间,因此用时间换空间
token由应用管理,可以避开同源策略

JWT是JSON Web Token
JWT原理是,服务器认证后,生产一个json对象,发回给用户
{“姓名”:’111‘,
“角色”:‘root’,
“到期时间”:‘2022-2-2-0:0’
}
每次通信,都要发回这个json对象,服务器完全靠这个认证用户身份
为了防止用户篡改,会生产对象时加上签名

JWT有3部分
header头部
payload负载
signature签名
最终组合为一个字符串,用.分开
Header部分是一个json对象,描述JWT的元数据,例如签名算法“alg”:“HS256”,令牌类型‘type’:‘JWT’
payload也是json,存实际需要传递的数据选用,客户也看得到
signature只有服务器知道,利用签名header的签名算法生成签名

JWT可以存在cookie也可以存在localSTORAGE
但是这样不能跨域
所以最好放在HTTP请求的头信息“authorization”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值