创建 Token
在微服务架构中,统一的身份认证是核心。我们采用 JWT 结合 Redis 的方式来实现无状态但有控制的会话管理。首先,我们需要在 oj-common-security 模块中引入必要的依赖。
1. 编写 JWT 工具类
创建一个 JwtUtils 类来处理令牌的生成与解析。这里使用 HS512 算法签名,注意密钥(secret)必须保密且随机,不能硬编码在代码里。最佳实践是通过 Nacos 配置中心动态获取,并定期更换。
package com.bite.common.security.utils;
import com.bite.common.core.contains.JwtContains;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import java.util.HashMap;
import java.util.Map;
public class JwtUtils {
/**
* 生成令牌
*
* @param claims 数据
* @param secret 密钥
* @return 令牌
*/
public static String createToken(Map<String, Object> claims, String secret) {
return Jwts.builder()
.setClaims(claims)
.signWith(SignatureAlgorithm.HS512, secret)
.compact();
}
/**
* 从令牌中获取数据
*
* @param token 令牌
* @param secret 密钥
* @return 数据
*/
public static Claims parseToken(String token, String secret) {
return Jwts.parser()
.setSigningKey(secret)
.parseClaimsJws(token)
.getBody();
}
}
createToken:根据传入的 claims 和 secret 创建 token。 parseToken:解码 token 获取 payload 信息。
2. 定义常量与模型
为了规范存储和访问,我们定义一些常量类和用户模型。
// 缓存常量
{
;
;
}
{
;
;
}
{
Integer identity;
}


