java工具类(JWT权限控制)
时间:2022-07-26
本文章向大家介绍java工具类(JWT权限控制),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
package com.adingxiong.pm.util;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.JwtBuilder;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
public class TokenUtils {
//加密的秘钥 相当于服务器的秘钥 一定保管好 不能泄露
private static final String secret = "secret";
//后去token的key 一般token存在请求头和响应头中
public static final String tokenHeader = "tokenHeader";
//token失效的时间 这里设置的是 20分钟
private static final Long expTime =60*2*10000L;
public static String getToken (String id, String name){
//这里的参数是自己定义的 可以根据每个人的需求定制不同的生成贵族
String UUID = "这是额外信息 , UUIDkye";
Map<String ,Object> map = new HashMap<>();
map.put("uuidkey" ,UUID);
JwtBuilder builder = Jwts.builder();
String token = builder
.signWith(SignatureAlgorithm.HS256,secret) //加密方式
.setId(UUID) //设置token生成的关键信息
.setSubject(name)
.setIssuedAt(new Date()) //设置token生效时间
.setExpiration(new Date(System.currentTimeMillis() + expTime)) //设置token失效时间
.addClaims(map)
.compact();
System.out.println("生成的Token : " + token);
return token;
}
/**
* 从token中 提取封装的信息
* @param token
* @return
*/
public static Claims getTokenBody(String token){
Claims claims = Jwts.parser().setSigningKey(secret)
.parseClaimsJws(token).getBody();
return claims;
}
public static String getUserName (String token){
Claims claims = getTokenBody(token);
String name = claims.getSubject();
return name;
}
public static String getId (String token){
Claims claims = getTokenBody(token);
String id = claims.getId();
return id ;
}
public static String getKey (String token ,String key){
Claims claims = getTokenBody(token);
String uuidkey = (String)claims.get(key);
return uuidkey;
}
public static void main (String args []){
String token = getToken("1" ,"熊超");
System.out.println("生成的token为:" + token);
String name = getUserName(token);
System.out.println("name:" + name);
String id = getId(token);
System.out.println("id:" + id);
String uuidkey = getKey(token ,"uuidkey");
System.out.println("uuidkey:" + uuidkey);
}
}
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 在Angular的index.html里插入script,拦截所有动态创建标签页的场景
- Angular应用里input字段后面的_ngcontent-hqi是什么含义
- WPF 已知问题 窗口在屏幕外创建将不会刷新渲染
- NuGet 更新库新版本的缓存问题
- 在Java项目中打印错误日志的正确姿势,排查问题更方便,非常实用!
- 开源后台系统*mee-admin*
- stc89c52在Linux或MacOS下使用sdcc和stcgal中断与LCD测试代码
- 豆瓣9.2分!17万条弹幕告诉你《沉默的真相》凭什么口碑高开暴走!
- Shader 入门:GLSL ES(迭代、选择和跳转)
- Github 与 Git,新手初次接触的尴尬历程
- vue-cli3配置路径别名
- 【自动化测试】【Jest-Selenium】(02)—— Jest 匹配器
- 【自动化测试】【Jest-Selenium】(03)—— Jest 异步测试
- 【自动化测试】【Jest-Selenium】(04)—— Selenium WebDriver
- 前端开发"模块打包器"webpack4实战入门