相当于数据库的添加和查找操作
*Java使用JWT的小例子:使用HMAC256算法加密。
jwt里面事实上不算是加密,他的Header和Payload里面的内容是经过Base64转码的,这不算加密,最后一步使用HMAC256是给Header和Payload的Base64码做签名,目的是为了防止这部分内容被篡改,verify()是为了校验签名是否被篡改,所以jwt做token是,里面不要有敏感信息,或者对敏感信息单独加密,否则,会造成信息泄露
一、实现登录功能
1、后端获取token 保存登录状态
1.1 我们要使用JWT来生成token,因此我们需要引入JWT依赖。
在pom文件中加入依赖:
<!--jsonwebtoken 生成token的库 -->
<dependency>
<groupId>com.auth0</groupId>
<artifactId>java-jwt</artifactId>
<version>3.8.3</version>
</dependency>
1.2 在bean目录下创建util工具目录,创建TokenUtil类 里面有生成的方法和检测的方法。
package com.example.demo.bean.util;
import com.auth0.jwt.JWT;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.interfaces.DecodedJWT;
import com.auth0.jwt.interfaces.JWTVerifier;
import java.util.Date;
public class TokenUtil {
private static final long EXPIRE_TIME = 24*60*60*1000; //有效时长
private static final String TOKEN_SECRET = "ben"; // 秘钥
/**
* 签名 生成
* @parm userName
* */
public static String sign(String userName){
String token = null;
try {
Date expiresAt = new Date(System.currentTimeMillis()+EXPIRE_TIME);
token = JWT.create()
.withIssuer("auth0")
.withClaim("userName",userName)
.withExpiresAt(expiresAt)
//使用HMAC256算法加密
.sign(Algorithm.HMAC256(TOKEN_SECRET));
}catch (Exception e){
e.printStackTrace();
}
return token;