第一次访问时,会生成一个SessionId(用于下次来的时候找到存储在服务器端的Session内容),并通过Cookie的形式返回给用户,以后用户再访问时,都需要带着这个Cookie。
使用JWT
1、引入依赖
<dependency>
<groupId>com.auth0</groupId>
<artifactId>java-jwt</artifactId>
<version>3.10.3</version>
</dependency>
2、生成token
3、根据令牌和签名解析数据
封装token工具类
import com.auth0.jwt.JWT;
import com.auth0.jwt.JWTCreator;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.interfaces.DecodedJWT;
import java.util.Calendar;
import java.util.Map;
public class JwtUtils {
private static final String SING = "@#SSDS%$#^";
/*
生成token header。payload。sing
*/
public static String getToken(Map<String,String> map){
Calendar instance = Calendar.getInstance();
instance.add(Calendar.DATE,7); // 默认7天过期
// 创建jwt builder
JWTCreator.Builder builder = JWT.create();
// payload
map.forEach( (k,v)-> {
builder.withClaim(k,v);
});
String token = builder.withExpiresAt(instance.getTime()) // 指定令牌过期时间
.sign(Algorithm.HMAC256(SING)); // signature
return token;
}
/*
验证token 合法性 并 获取token信息
*/
public static DecodedJWT verify(String token){
return JWT.require(Algorithm.HMAC256(SING)).build().verify(token);
}
}
在springboot项目中使用jwt时,可以配合拦截器使用,