首页 > 其他分享 >简单封装JWTUtils实现对token的创建和过期时间检查

简单封装JWTUtils实现对token的创建和过期时间检查

时间:2023-05-21 17:33:57浏览次数:30  
标签:封装 String JWTUtils userId System token jsonwebtoken import

想要使用jwt需要先导入依赖

<!-- https://mvnrepository.com/artifact/io.jsonwebtoken/jjwt -->
<dependency>
    <groupId>io.jsonwebtoken</groupId>
    <artifactId>jjwt</artifactId>
    <version>0.9.1</version>
</dependency>

封装类如下所示

 1 package com.huoziqi.springboot.utils;
 2 
 3 /**
 4  * @version 1.0
 5  * @Author 作者名
 6  * @Date 2022/8/13 10:19
 7  */
 8 
 9 import io.jsonwebtoken.Jwt;
10 import io.jsonwebtoken.JwtBuilder;
11 import io.jsonwebtoken.Jwts;
12 import io.jsonwebtoken.SignatureAlgorithm;
13 
14 import java.util.Date;
15 import java.util.HashMap;
16 import java.util.Map;
17 
18 /**
19  * JsonWebToken
20  * 该工具类用来创建token 和验证token
21  *
22  * 将用户id转换成token信息传到前端
23  * 在访问路径是会对token进行验证
24  * 判断是否正处于登录状态
25  */
26 public class JWTUtils {
27 
28     /**
29      * 三部分组成
30      */
31     //密钥
32     private static final String jwtToken = "123456huoziqi!@#$$";
33 
34     /**
35      * 生成token
36      * @param userId
37      * @return
38      */
39     public static String createToken(Long userId){
40         Map<String,Object> claims = new HashMap<>();
41         claims.put("userId",userId);
42 
43         JwtBuilder jwtBuilder = Jwts.builder()
44                 .signWith(SignatureAlgorithm.HS256, jwtToken) // 签发算法,秘钥为jwtToken
45                 .setClaims(claims) // body数据,要唯一,自行设置
46                 .setIssuedAt(new Date()) // 设置签发时间
47                 .setExpiration(new Date(System.currentTimeMillis() + 24 * 60 * 60 * 60 * 1000));// token过期时间
48         //生成最终加密后的token
49         String token = jwtBuilder.compact();
50         return token;
51     }
52 
53     /**
54      * 解析token
55      * @param token
56      * @return
57      */
58     public static Map<String, Object> checkToken(String token){
59         try {
60             Jwt parse = Jwts.parser().setSigningKey(jwtToken).parse(token);
61             return (Map<String, Object>) parse.getBody();
62         }catch (Exception e){
63             e.printStackTrace();
64         }
65         return null;
66 
67     }
68 
69     public static void main(String[] args) {
70         String token = createToken(1l);
71 
72         System.out.println(token);
73         System.out.println();
74         System.out.println();
75         Map<String, Object> map = checkToken(token);
76         Integer o = (Integer) map.get("userId");
77         System.out.println(map.get("userId"));
78         System.out.println(o);
79     }
80 
81 }

 

标签:封装,String,JWTUtils,userId,System,token,jsonwebtoken,import
From: https://www.cnblogs.com/qijiangforever/p/17418859.html

相关文章

  • 配置k8s的一个serviceaccount具有管理员权限并获取他的token
    创建sa账户/授定管理员角色权限cat>sa.yaml<<eofapiVersion:v1kind:ServiceAccountmetadata:name:kubepi-usernamespace:kube-systemeofcat>rolebe.yaml<<eofapiVersion:rbac.authorization.k8s.io/v1kind:ClusterRoleBindingmetadata:na......
  • 一种基于token 和 Permission 的权限管理中间件示例
    1.先上封装后的使用效果[Permission(Key="/User/AddUser")][HttpPost]publicResultAddUser([FromBody]SaUseruser){//Dosth.thrownewNotImplementedException();}[Authorize]......
  • 常用的标准LCD驱动芯片,性价比高,稳定性好,多种封装型号选择VK1056
    型号:VK1056BVK1056C品牌:永嘉微电/VINKA封装形式:SOP24SSOP24年份:最新年份VK1056B/C概述:VK1056B/C是56点、内存映象和多功能的LCD驱动,VK1056B的软件配置特性使它适用于多种LCD应用场合,包括LCD模块和显示系统,用于连接主控制器和VK1056B的管脚只有4条,VK1056B......
  • Cannot cast Newtonsoft.Json.Linq.JObject to Newtonsoft.Json.Linq.JToken.
    @@CannotcastNewtonsoft.Json.Linq.JObjecttoNewtonsoft.Json.Linq.JToken 解决方法方法参数为[FromBody]objectcontent JObjectjo=(JObject)JsonConvert.DeserializeObject(content.ToString());JToken[]jtoArray=jo["contentBody"].ToArray();List<......
  • vue3+vant3封装省市区组件
    因为后台返回的数据格式和vant不一致,所以自己遍历循环得到自己想到的格式。省市区的接口并不是一个以children格式,一次性全部获取,而是选择市的时候需要得到省的id,一层一层请求接口才能得到省市区。 父组件:1<selectArea2@addressOnFinish="onChangeArea"3......
  • 通过C++/CLR封装的方式使非托管的C++、VB6.0调用.Net托管代码
    通常.Net的dll只能被加载到对应的虚拟机中运行和调用,而无法直接被低版本的.Net或C++和VB6.0等非托管代码调用。但是实际项目开发过程中我们为了兼容,不得不同时支持这些非托管代码或低版本的运行时。实际上微软提供了多种方式可以实现这种需求,如进程间通讯、COM/ActiveX、C++/CLR。......
  • 面向对象设计里引入 Friend 是对封装性的破坏吗,friend 在 SAP ABAP 里的应用场景
    笔者的SAP技术交流群里,有朋友提问:我想问一个很基础的问题,为什么类要有friend啊反正我工作这些年,在SAP生产代码里没用过友元,只是在生产代码的单元测试代码里用过,原因也就是让单元测试代码能够访问到被测试的生产类的私有属性。代码如下:SAPABAP的帮助文档:在面向对象......
  • web自动化测试入门篇04——selenium+python基础方法封装
      ......
  • 用token辅助 密码爆破
    第一步:打开皮卡丘,点击暴力破解,token防爆破,输入正确用户名,错误密码BP拦截请求,点击皮卡丘Login,然后拦截后,发送给Intruder 第二步:爆破方式选择音叉方式,  &&预留密码和token。 第三步:定位到有效载荷中,,有效负载集选择1,然后先把密码自定粘贴进来。再选择有效荷载集2,选择......
  • 什么是cookies,session,token(面试必问)
    前言一般在面试的时候,经常会遇到关于什么是cookies,session,token,大多数面试官可以通过这几个概念基本上了解到你对接口请求方面是否存在了解或者工作中掌握的熟练程度,看似很小的问题,但是背后缺藏着大大的阴谋,今天跟着小编一起来了解下到底什么是cookies,session,token。http无状态......