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);
}
}
- JavaScript 基础(四) 循环
- 【译】WordPress 中的50个过滤器(6):第41-50个过滤器
- 【译】WordPress 中的50个过滤器(5):第31-40个过滤器
- 使用VS2010 C#开发ActiveX控件
- JavaScript 基础(三) 对象 条件判断
- “大数据+定制化服务”或将引领高端旅游市场
- FrameLayout(框架布局)
- WordPress 中变量$allowedposttags 添加自定义HTML属性
- 移动端UC /QQ 浏览器的部分私有Meta 属性
- RelativeLayout(相对布局)
- TableLayout(表格布局)
- 【MindiaX实例】 PHP 在foreach 中获取JSON 单个数据
- 史上十大最严重黑客袭击事件盘点
- LinearLayout(线性布局)
- 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 文档注释
- 使用laravel的migrate创建数据表的方法
- 解决laravel session失效的问题
- php7下的filesize函数
- PHP-FPM 设置多pool及配置文件重写操作示例
- laravel实现登录时监听事件,添加登录用户的记录方法
- php更新cookie内容的详细方法
- php实现映射操作实例详解
- Laravel 已登陆用户再次查看登陆页面的自动跳转设置方法
- yii框架数据库关联查询操作示例
- laravel-admin的多级联动方法
- Laravel数据库读写分离配置的方法
- php给数组赋值的实例方法
- php实现分页功能的详细实例方法
- 浅谈Laravel中的三种中间件的作用
- laravel 使用auth编写登录的方法