34 lines
1.3 KiB
Java
34 lines
1.3 KiB
Java
|
package com.example.chat.jwt;
|
|||
|
|
|||
|
import com.auth0.jwt.JWT;
|
|||
|
import com.auth0.jwt.JWTVerifier;
|
|||
|
import com.auth0.jwt.algorithms.Algorithm;
|
|||
|
import com.auth0.jwt.interfaces.DecodedJWT;
|
|||
|
import org.springframework.stereotype.Component;
|
|||
|
|
|||
|
|
|||
|
public class JWTUtil {
|
|||
|
private static final String tokenPassword = "uziCjb";
|
|||
|
public static String sign(String username) {//用用户名作为被加密的对象
|
|||
|
String token;
|
|||
|
|
|||
|
token = JWT.create()//生成jwt令牌,加密过程
|
|||
|
.withIssuer("llh")
|
|||
|
.withClaim("username", username)
|
|||
|
.sign(Algorithm.HMAC256(tokenPassword));
|
|||
|
return token;//返回加密后的token
|
|||
|
}
|
|||
|
public static String verify(String token){
|
|||
|
JWTVerifier jwtVerifier=JWT.require(Algorithm.HMAC256(tokenPassword)).withIssuer("llh").build();//构建一个jwt解码器
|
|||
|
DecodedJWT jwtToken=jwtVerifier.verify(token);//解码
|
|||
|
if(token.isEmpty()){//若token为空则返回false拦截
|
|||
|
return null;
|
|||
|
}
|
|||
|
else {
|
|||
|
System.out.println("认证通过:");
|
|||
|
System.out.println("issuer: " + jwtToken.getIssuer());
|
|||
|
System.out.println("username: " + jwtToken.getClaim("username").asString());
|
|||
|
return jwtToken.getClaim("username").asString();
|
|||
|
}
|
|||
|
}
|
|||
|
}
|