JSON Web Tokens are an open, industry standard RFC 7519 method for representing claims securely between two parties.
JWT.IO allows you to decode, verify and generate JWT.
JSON Web令牌是一种开放的行业标准RFC 7519方法,用于在双方之间安全地表示索赔。JWT。IO允许您解码、验证和生成JWT。
session
通过一个sessionId标识,保存在服务器,不利于集群
token
一般利用token+redis,利用UUID生成一个令牌,利用该令牌来访问redis,从而获得当前的用户信息,每次都需要查询redis。
JWT
先来生成一个JWT
<!-- jwt -->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.1</version>
</dependency>
public class JWTDemo1 {
public static void main(String[] args) {
String secretKey = "mayiktKey";
JwtBuilder jwtBuilder = Jwts.builder()
.setId("66")
.setSubject("mayikt")
.setIssuedAt(new Date())
.claim("username","jielin")
.signWith(SignatureAlgorithm.HS256,secretKey);
System.out.println(jwtBuilder.compact());
}
}
eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiI2NiIsInN1YiI6Im1heWlrdCIsImlhdCI6MTYxNzUxODk1NCwidXNlcm5hbWUiOiJqaWVsaW4ifQ.naLH38W2kbYZUFDF0TEfF9_baoqyznyuFsOe1BompBM
https://jwt.io/#debugger-io
1.头部
{
“alg”: “HS256”,
“typ”: “JWT”
}
描述了PayLoad的加密方式
2.装载的数据 PayLoad
3.验证签名
与Token的区别:
JWT不依赖于服务器端,将数据信息内容直接存放在客户端
JWT优缺点
优点:
1.无需在服务器存放用户的数据,减轻服务器的压力
2.轻量级的,json风格简单
3.跨语言
缺点:
1.无法更新jwt有效期
2.无法销毁一个jwt
所以修改PayLoad的数据被修改了就可以发现!