JWT实战与原理

JWT实战和原理

一、cookie与session

1、服务器端向浏览器第一次写入cookie的时候,会额外写入名为JSESSIONID

 

 后面每次请求都会带上此JSESSIONID,这就是sessionid, 服务器端会根据sessionid获取到对应的session,从session获取到值,根据值来判定是否是相同用户。

一个JSESSIONID 就代表一个用户

 

 

 

 

 

     

 

 

 

 

二、为什么需要JWT

cookie和session的缺点

  • session都存储再服务端内存     堆内存  量大引起质变
  • 集群环境中需要额外处理         
    • user->a1,a2,a3
    • 解决方法:ip_hash,分布式session
  • csrf:Cross-site reqest forgery, cookie被截获后发生跨站点请求伪造
  • cookie的跨域(前后端分离)读写不方便 

JWT有点:

解决了上面cookie和session的缺点,主要应用在前后端分离的场景,当然你用在单体应用里面也是没有问题的。

三、JWT的实现方式

 jwt:json web token

官网:http://jwt.io

 

3.1 java-jwt

Header.Payload.Signature

<dependency>
<groupId>com.auth0</groupId>
<artifactId>java-jwt</artifactId>
<version>3.11.0</version>
</dependency>

token:令牌,字符串

 

 

3.2 jjwt

 

<!-- https://mvnrepository.com/artifact/io.jsonwebtoken/jjwt-api -->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-api</artifactId>
<version>0.11.3</version>
</dependency>


 

四、前后端交互

 

4.1 后端工具类

 

4.2 后端返回token

 

4.3 前端存储token

 spa(single page application: sessionStorge)   vue  

localStorage

 

 

4.4 前端传递的方式

前端存储token后,干嘛呢? 之后每次请求都携带这个token,用于让服务端校验。

  • Authorization:授权
  • 请求参数里面,参数名字无所谓,一般的都叫做token。 

两者都可以选择使用,任取其一即可。

4.5 后端接收与校验

 

五、jwt原理

 

5.1 jwt的组成

 

5.2 手写jwt算法

 

 

其他相关资料

 

idea快捷键

https://blog.csdn.net/wyouwd1/article/details/125705477

https://blog.csdn.net/chiyunhouse/article/details/117460749

 

Java Web Token 之 JJWT 使用

https://blog.csdn.net/weixin_41540822/article/details/88781964

https://blog.csdn.net/weixin_45070175/article/details/118559272

 

beforeSend

https://blog.csdn.net/qq_45024637/article/details/92011586

 

 

https://www.likecs.com/show-204298938.html 

 

https://www.likecs.com/show-203359555.html

 

https://www.sojson.com/MyEclipes-2.html

 

https://developer.aliyun.com/mvn/guide

https://mvnrepository.com/

 

maven和jdk版本对应关系

 

posted @ 2022-12-28 10:55  塞纳纽斯  阅读(83)  评论(0)    收藏  举报