实现一个简单的生成token以及验证其时效功能

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_41535326/article/details/101702489

添加如下依赖:

  <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt</artifactId>
            <version>0.9.0</version>
  </dependency>

小工具代码:

package org.mochou.mymall.admin.util;

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.ExpiredJwtException;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import org.springframework.stereotype.Service;

import java.util.Date;


@SuppressWarnings("all")
@Service
public class JwtUtil {
	//私钥
    final static String base64EncodedSecretKey = "admin";
    //过期时间,十分钟
    final static long TOKEN_EXP = 1000 * 60 * 10;

    public String getToken(String userName) {
        return Jwts.builder()
                .setSubject(userName)
                .claim("roles", "user")
                .setIssuedAt(new Date())
                .setExpiration(new Date(System.currentTimeMillis() + TOKEN_EXP))
                .signWith(SignatureAlgorithm.HS256, base64EncodedSecretKey)
                .compact();
    }

    /**
     * 检查token,只要不正确就会抛出异常
     **/
    public boolean checkToken(String token) {
        try {
            final Claims claims = Jwts.parser().setSigningKey(base64EncodedSecretKey).parseClaimsJws(token).getBody();
            //return claims;
            return true;
        } catch (ExpiredJwtException e1) {
            //throw new Exception("登录信息过期,请重新登录");
            return false;
        } catch (Exception e) {
            //throw new Exception("用户未登录,请重新登录");
            return false;
        }
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_41535326/article/details/101702489