jwt token 附加用户信息_JSON WEB TOKEN(JWT)详解以及JAVA项目实战

本文介绍了HTTP无状态特性带来的问题,引出Cookie和Session的身份验证机制,然后详细阐述基于Token的鉴权方式,特别是JWT(JSON Web Token)的结构、特点和生成、验证过程。在JAVA环境下,通过JJWT库展示了JWT的生成、解析和有效性校验。最后提供了相关工具类的使用示例。
摘要由CSDN通过智能技术生成

1.我们为什么要是用token

Token, 令牌,代表执行某些操作的权利,也就是我们进行某些操作的通行证。

1.1 在很久很久以前,我们使用什么做身份认证?

我们都知道 HTTP 是无状态(stateless)的协议:HTTP 对于事务处理没有记忆能力,不对请求和响应之间的通信状态进行保存。

使用 HTTP 协议,每当有新的请求发送时,就会有对应的新响应产生。协议本身并不保留之前一切的请求或响应报文的信息。这是为了更快地处理大量事务,确保协议的可伸缩性,而特意把 HTTP 协议设计成如此简单的。

可是,随着 Web 的发展,早期这种无状态的特性却带来了很多不方便性,比如说用户登录新浪微博,在登录页输入用户名、密码之后进入首页,但是由于 HTTP 是无状态的,HTTP 并不知道上一次的 HTTP 请求是否通过了验证,更无法得知当前用户的具体信息。

最简单的解决方案就是在所有的请求里面都带上用户名和密码,这样虽然可行,但是大大加重了服务器的负担(对于每个 request 都需要到数据库验证),而且用户也要每进入一个页面输入一次密码,毫无用户体验可言。

为此,引入了各种身份认证机制

1.1.1 Cookie & session

Cookie 是由 HTTP 服务器设置的,保存在浏览器中的小型文本文件,其内容为一系列的键值对

相对于保存在浏览器中的 Cookie,Session 是存储在服务器端的

Cookie 传递过程:浏览器向某个 URL 发送请求

对应的服务器收到该 HTTP 请求,生成要发给浏览器的 HTTP 响应

在响应头中加入 Set-Cookie 字段,值为要设置的的Cookie

浏览器收到来自服务器的 HTTP 响应

浏览器在响应头中发现了 Set-Cookie 字段,就会将该字段的值保存在内存或者是硬盘中。

当下一次向该服务器发送 HTTP 请求时,会将服务器设置的 Cookie 附加在 HTTP 请求的字段 Cookie 中。

服务器收到这个 HTTP 请求之后,发现请求头中有 Cookie 字段,就知道了已经处理过这个用户的请求了。

过期的 Cookie 会被删除

基于Cookie-session的认证过程用户输入登

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值