当前位置:网站首页>JJWT tool class
JJWT tool class
2022-08-02 03:32:00 【Tom has no Cat】
依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.1</version>
</dependency>
JJWT 工具类
package com.example.utils.jwt;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.JwtBuilder;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.util.Date;
import java.util.HashMap;
/** * @author zpc * @version 1.0 * @date 2022/2/19 13:56 */
@Component
@ConfigurationProperties(prefix = "jwt.config")
@Data
@NoArgsConstructor
@AllArgsConstructor
public class JwtUtil {
private String key;
private long ttl;
/** * 生成 JWT * @param id * @param subject * @param roles 角色 * @return */
public String createJWT(String id, String subject, String roles) {
long nowMillis = System.currentTimeMillis();
Date nowDate = new Date(nowMillis);
HashMap<String, Object> map = new HashMap<>();
map.put("alg", "HS256");
map.put("typ", "JWT");
JwtBuilder builder = Jwts.builder()
.setHeaderParams(map)
// 设置 id
.setId(id)
// 设置用户名
.setSubject(subject)
// 设置 jwt 签发时间
.setIssuedAt(nowDate)
// Set the signature algorithm used for signing and the key used for signing
.signWith(SignatureAlgorithm.HS256, key)
.claim("roles", roles);
if (ttl > 0) {
builder.setExpiration(new Date(nowMillis + ttl));
}
return builder.compact();
}
/** * 解析 JWT * @param jwtStr * @return */
public Claims parseJWT(String jwtStr) {
return Jwts.parser()
.setSigningKey(key)
.parseClaimsJws(jwtStr)
.getBody();
}
}
application.yml 配置
jwt:
config:
ttl: 设置过期时间
key: Set the key used for signing
边栏推荐
- Chapter 10 聚类
- 磷脂-聚乙二醇-靶向新生血管靶向肽APRPG,DSPE-PEG-APRPG
- @Autowired详解[email protected]在static属性上的使用
- JSP WebSehll backdoor script
- 弹性盒子flex属性
- 化学试剂磷脂-聚乙二醇-羟基,DSPE-PEG-OH,DSPE-PEG-Hydroxyl,MW:5000
- bgp机房的动态路由和静态路由的区别
- [Remote Control Development Basic Tutorial 3] Crazy Shell Open Source Formation UAV-ADC (Joystick Control)
- 科研试剂DMPE-PEG-Mal 二肉豆蔻酰磷脂酰乙醇胺-聚乙二醇-马来酰亚胺
- 基于libmodbus库实现modbus TCP/RTU通信
猜你喜欢
随机推荐
Brute force visitors
JSP WebSehll backdoor script
oracle内连接和外连接
OD-Model [4]: SSD
【遥控器开发基础教程3】疯壳·开源编队无人机-ADC(摇杆控制)
Using WebShell to get Shell Skills
磷脂-聚乙二醇-醛基 DSPE-PEG-Aldehyde DSPE-PEG-CHO MW:5000
Small program (necessary common sense for development) 1
A senior test engineer asked me these questions as soon as the interview came
小程序组件总结
HCIP-第十一天-MPLS+BGP
2022年比若依更香的开源项目
3分钟带你了解微信小程序开发
MySQL占用CPU过高,排查原因及解决的多种方式法
JVM学习----垃圾回收--G1
亚马逊卖家怎么提升转化率
腾讯50题
线性代数学习笔记3-1:矩阵与线性变换、常见矩阵(逆矩阵、伴随矩阵、正交矩阵等)
LeetCode:第304场周赛【总结】
Chapter 10 聚类
![CV-Model [4]: MobileNet v3](/img/a1/fc3901d55b28aa080235f093b94cb4.png)






![OD-Model [4]: SSD](/img/ad/4ffb3e56538aa38b03173d79d9d213.jpg)

