Token认证登录(原创有效)
大体认证过程:
1.用户通过用户名和密码发送请求。
2.服务器端程序验证。
3.服务器端程序返回一个带签名的token 给客户端。
4.客户端储存token,并且每次访问API都携带Token到服务器端的。
5.服务端验证token,校验成功则返回请求数据,校验失败则返回错误码。
上代码…
token工具类
package com.jk.dup.util;
import com.auth0.jwt.JWT;
import com.auth0.jwt.JWTVerifier;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.exceptions.JWTDecodeException;
import com.auth0.jwt.interfaces.DecodedJWT;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
/**
* @author: DACHUI
* @Date: 2021/3/7 15:17
* @Description:
*/
public class TokenUtils {
//设置过期时间
private static final long EXPIRE_DATE=60 * 60 * 1000;
//token秘钥
private static final String TOKEN_SECRET = "r54eg5sae4r665ser54rg";
//实现签名方法
public static String getToken (String username,String password){
String token = "";
try {
//这里将useName 和 password 存入了Token,在下面的解析中,也会有解析的方法可以获取到Token里面的数据
//Token过期的时间
//过期时间
Date date = new Date(System.currentTimeMillis()+EXPIRE_DATE);
//秘钥及加密算法
Algorithm algorithm = Algorithm.HMAC256(TOKEN_SECRET);
//设置头部信息,类型以及签名所用的算法
Map<String,Object> header = new HashMap<>();
header.put("typ","JWT");
header.put("alg","HS256");
//携带username,password信息,存入token,生成签名
token = JWT.create()
.withHeader(header)
//存储自己想要留给前端的内容
.withClaim("username",username)
.withClaim("password",password).withExpiresAt(date)
.sign(algorithm);
}catch (Exception e){
e.printStackTrace();
return null;
}
return token;