手动生成token_从session、cookie到token及JWT

本文探讨了HTTP协议的无状态特性,以及为解决此问题引入的Session、Cookie、Token和JWT的概念。解释了Session与Cookie的工作原理,分析了Token的安全性和优势,特别介绍了JWT的构成和工作流程。最后,区分了JWT与OAuth2.0的区别,指出JWT常用于身份验证,而OAuth2.0是授权规范。
摘要由CSDN通过智能技术生成

相信每一个做过web开发的人,都或多或少用过或者听说过session、cookie,以及token以及JWT。有时候感觉很困惑,仿佛都是差不多的东西,这里就简单的对这几个概念做一个阐述。

首先必须要知道的是:

http协议是无状态的

什么是无状态呢?就是说这一次请求和上一次请求是没有任何关系,互不相识的。这种无状态的好处是快速,而坏处可想而知:用户发起登陆请求,成功后,发起另一个页面跳转请求,但因为无状态,服务器并不知道这个用户是不是已经登录过了,因此就只能再把这个请求重定向到登陆页面。

这样用户就疯了,破系统怎么一直让我登录。

session和cookie

所以,前辈们就想了一个办法,在第一次登录后,在服务器端产生一个会话id(sessionId),记录一下用户及其状态。然后把sessionId返回给浏览器。浏览器将这个sessionId记录到cookie里,之后的请求再把它带上。这样服务器从请求中拿到cookie里的sessionId,然后到自己的存储(一般是用redis)里查一下,得到用户的状态。接下来就可以畅通无阻了。

总之,

  1. session是服务器端,cookie是浏览器端(用户端)

  2. cookie只是实现session的其中一种方案。虽然是最常用的,但并不是唯一的方法。禁用cookie后还有其他方法存储,比如放在url中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值