Spring Boot+Vue前后端分离项目练习02之网盘项目利用token进行登陆验证

本文介绍了如何在项目中集成JWT,包括添加依赖、配置参数、创建JWT配置类和工具类,以及用户注册和登录的实现。在注册过程中,创建了DTO类以统一前后端数据交互,登录时生成并返回token,最后展示了如何验证token的有效性。

1.添加依赖

首先需要添加jwt对应的依赖。

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

2.添加配置

JWT由三部分构成,分别是 header, payload 和 signature, 其中前两部分中的参数涉及到的一些参数需要用户自定义,因此我们需要将这些参数放到配置文件中,这样后续就可以动态修改配置。

# 密钥
jwt.secret = 6L6T5LqG5L2g77yM6LWi5LqG5LiW55WM5Y+I6IO95aaC5L2V44CC
# 签名算法:HS256,HS384,HS512,RS256,RS384,RS512,ES256,ES384,ES512,PS256,PS384,PS512
jwt.header.alg = HS256
#jwt签发者
jwt.payload.iss = picacho
#jwt过期时间(单位:毫秒)
jwt.payload.exp = 60 * 60 * 1000 * 24 * 7
#jwt接收者
jwt.payload.aud = picacho_1

3.创建JWT配置类

创建config包,在该包下创建JWT对应的配置类。

import lombok.Data;

@Data
public class JwtHeader {
   
   
    private String alg;
    private String typ;
}
import lombok.Data;

@Data
public class JwtPayload {
   
   
    private String iss;
    private String exp;
    private String sub;
    private String aud;
}
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Data
@Component
@ConfigurationProperties(prefix = "jwt")
public class JwtProperties {
   
   
    private String secret;
    private JwtHeader header;
    private JwtPayload payload;
}

这里通过配置文件的属性值来为jwt进行属性值的配置。

4.创建JWT工具类

创建JWTUtil类,在里面创建generalSecretKey方法来生成密钥,生成的过程需要使用 JWT的方法SecretKeySpec来生成密钥,该密钥在创建JWT和验证 JWT 的时候都会用到且相同。

@Component
public class JWTUtil {
   
   

    @Resource
    JwtProperties jwtProperties;

    /**
     * 由字符串生成加密key
     * @return
     */
    private SecretKey generalKey() {
   
   
        // 本地的密码解码
        byte[] encodedKey = Base64.decodeBase64(jwtProperties.getSecret());
        // 根据给定的字节数组使用AES加密算法构造一个密钥
        SecretKey key = new SecretKeySpec(encodedKey, 0, encodedKey.length, "AES");
        return key;
    }
}

创建生成JWT方法。

    /**
     * 创建jwt
     * @param subject
     * @return
     * @throws Exception
     */
    public String createJWT(String subject) throws Exception {
   
   

        // 生成JWT的时间
        long nowTime = System.currentTimeMillis();
        Date nowDate = new Date(nowTime);
        // 生成签名的时候使用的秘钥secret
        SecretKey key = generalKey();

        ScriptEngineManager manager = new ScriptEngineManager();
        ScriptEngine se = manager.getEngineByName("js");
        int expireTime = 0;
        try {
   
   
            expireTime =(int) se.eval(jwtProp
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

picacho_pkq

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

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

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

打赏作者

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

抵扣说明:

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

余额充值