【Spring Boot】3.4 JWT 的使用

本文介绍了如何在Spring Boot项目中使用JWT进行权限验证。内容包括引入JWT组件,创建JWT工具类,设置拦截器验证Token合法性,并讨论了密码修改后旧Token失效和单点登录的简单实现。拦截器利用自定义工具类验证前端传回的Token,并通过Redis存储敏感信息以确保安全性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

引入组件

<!-- 引入JWT依赖 -->
        <dependency>
            <groupId>com.auth0</groupId>
            <artifactId>java-jwt</artifactId>
            <version>3.4.0</version>
        </dependency>

创建JWT工具类

import com.alibaba.druid.util.StringUtils;
import com.auth0.jwt.JWT;
import com.auth0.jwt.JWTCreator;
import com.auth0.jwt.JWTVerifier;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.interfaces.DecodedJWT;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.Temporal;
import java.util.Calendar;
import java.util.Date;

/***
 * Author: YL.Lou
 * Class: JWTUtil
 * Project: washes_base_backstage
 * Introduce: JWT的验证工具类 被生成Token的方法Service调用 也会被 拦截器调用 验签
 * DateTime: 2022-06-29 19:23
 ***/
 
@Slf4j
@Component
public class JWTUtil {
   
    // 为Redis存储准备的Key前缀 后边跟的是用户的 ID  例如:JWT_SIGN_1 查询到的是 MD5 之后的 用户密码 信息
    public static final String SIGN = "JWT_SIGN_";

    // 加盐
    private static final String SECRET = "lou123321!!!";

    @Autowired
    private RedisUtil redisUtil;

    /**
     * 获取token
     * @param u user
     * @return token
     */
    public String getToken(User u) {
   

        Calendar instance = Calendar.getInstance();

        //默认令牌过期时间30天
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

        instance.add(Calendar.DATE, 7);

        JWTCreator.Builder builder = JWT.create();

        builder.withClaim("userId", String.valueOf(</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值