生成token的两种方式

方式一:自定义工具类

手动编写代码,写两个方法,一个生成,一个解析;

第一步:导入依赖

        <!--JWT令牌依赖-->
        <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt</artifactId>
            <version>0.9.1</version>
        </dependency>
		
		<!--jdk9以后需添加此依赖-->
		<dependency>
		    <groupId>javax.xml.bind</groupId>
		    <artifactId>jaxb-api</artifactId>
		</dependency>

第二步:手动编写代码

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;

import java.util.Date;
import java.util.Map;

/**
 * token生成工具
 */
public class JwtUtils {

    /**
     * 有效期,单位是毫秒
     */
    private static Long expire = 259200000L;

    /**
     * 生成JWT令牌
     */
    public static String generateJwt(Map<String, Object> claims, String signKey) {
        String jwt = Jwts.builder()
                .addClaims(claims)
                .signWith(SignatureAlgorithm.HS256, signKey)
                .setExpiration(new Date(System.currentTimeMillis() + expire))
                .compact();
        return jwt;
    }

    /**
     * 解析JWT令牌
     */
    public static Claims parseJWT(String jwt, String signKey) {
        Claims claims = Jwts.parser()
                .setSigningKey(signKey)
                .parseClaimsJws(jwt)
                .getBody();
        return claims;
    }
}

第三步:使用

配置tokenKey

# tokenKey(需要四个字符或以上)
token:
  key: csdn

注入配置

    @Value("${token.key}")
    private String tokenKey;

生成token

	// 写入用户信息
	HashMap<String, Object> tokenMap = new HashMap<>();
	tokenMap.put("userName",userDB.getUsername());
	tokenMap.put("id",userDB.getUserId());
	
	// 生成token
	String token = JwtUtils.generateJwt(tokenMap,tokenKey);

测试
在这里插入图片描述

方式二:Hutool工具包

第一步:导入依赖

	<dependency>
	    <groupId>cn.hutool</groupId>
	    <artifactId>hutool-all</artifactId>
	    <version>5.8.6</version>
	</dependency>

第二步:使用

配置tokenKey

# tokenKey
token:
  key: csdn

注入配置

    @Value("${token.key}")
    private String tokenKey;

使用createToken()方法生成token,注意方法参数为tokenKey的字节数组;

	// 写入用户信息
	HashMap<String, Object> tokenMap = new HashMap<>();
	tokenMap.put("userName",userDB.getUsername());
	tokenMap.put("id",userDB.getUserId());
	
	// 生成token
	String token = JWTUtil.createToken(tokenMap,tokenKey.getBytes());

测试

在这里插入图片描述

总结

推荐使用方法二,方法一需要导入两个依赖,并且tokenKey长度是有限制的,字符长度要为4位或者超过4位。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
生成登录随机token的代码可以参考以下几种方式: 1. Java代码: 在Java中,可以使用以下代码生成随机token: ```java public class TokenProccessor { private TokenProccessor() {} private static final TokenProccessor instance = new TokenProccessor(); public static TokenProccessor getInstance() { return instance; } public String makeToken() { String token = (System.currentTimeMillis() + new Random().nextInt(999999999)) + ""; try { MessageDigest md = MessageDigest.getInstance("md5"); byte[] md5 = md.digest(token.getBytes()); BASE64Encoder encoder = new BASE64Encoder(); return encoder.encode(md5); } catch (NoSuchAlgorithmException e) { throw new RuntimeException(e); } } } ``` 这段代码使用了当前时间戳和随机数生成一个字符串作为token,然后使用MD5进行加密,并使用Base64编码返回。 2. Go代码: 在Go语言中,可以使用以下代码生成随机token: ```go // RandStr 生成随机字符串 func RandStr(length int) string { str := "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" bytes := []byte(str) result := []byte{} rand.Seed(time.Now().UnixNano() + int64(rand.Intn(100))) for i := 0; i < length; i++ { result = append(result, bytes[rand.Intn(len(bytes))]) } return string(result) } ``` 这段代码使用了当前时间戳和随机数生成一个字符串作为token,然后返回。 以上是两种常见的生成随机token的代码示例,你可以根据自己的需求选择其中一种来使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

何中应

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值