SpringBoot整合Jwt 前后端分离认证
jwt基本概念不多说了,到处都是,直接上代码
一、生成Jwt
目录结构👇
创建一个普通的springboot 项目: springboot-jwt-demo
只需要加一个Spring Web的模块就ok
接下来咱们导入pom依赖
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.1</version>
</dependency>
这个依赖是java jwt的依赖,里面帮我们封装了一些功能。咱们拿来即用即可
二、编写一个Jwt的工具包
JwtUtils
package com.xiaozhoubg.utils;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import org.springframework.util.Base64Utils;
import java.util.Collections;
import java.util.Date;
public class JwtUtils {
//2. 这里调用springboot的base64加密包,加密一个 字符串 ,因为一会我们要解密所以放到外部
private static final byte[] KEY = Base64Utils.encode("Lanou3g".getBytes());
//3. 自定定义一个方法,这样咱们现在只需要传用户id,时间自动3600秒(半小时)
//如果说需要自己定义时间,那就调 1 方法即可。
public static String newToken(Long id){
return newToken(id,10);
}
//1. 创建一个变量 用户id ,过期时间秒 seconds 3600
public static String newToken(Long id,long seconds){
String token = Jwts.builder() //建造者方法
.setId(String.valueOf(id)) //指定id值
.setExpiration(new Date(System.currentTimeMillis() + seconds * 1000))//指定过期时间
.addClaims(Collections.singletonMap("duration",seconds))
.signWith(SignatureAlgorithm.HS256,KEY)//给签名指定算法 和密钥(base64加密的字符串)
.compact();