依赖

        <dependency>
<groupId>com.auth0</groupId>
<artifactId>java-jwt</artifactId>
<version>4.0.0</version>
</dependency>

JWTUtil 工具包

public class JWTUtils {
//Edition是对象
public static String createJWT(Edition edition){
//声明签名的算法。 1.参数为密钥,注意密钥只能后端知晓,因为密钥泄露代表可以任意对生成的jwt串进行解密
Algorithm algorithm = Algorithm.HMAC256("secret");
//2.声明头部
Map map = new HashMap<>();
//声明加密算法
map.put("alg","HS256");
//声明类型 jwt 固定值
map.put("typ","JWT"); //3.声明载荷 并且创建出jwt串
String token = JWT.create()
//设置头部
.withHeader(map)
//载荷中的公共信息。签发人。任意填写即可
.withIssuer("test")
//载荷中的公共信息 受众,通常指用户
.withAudience("edition")
//载荷中的自定义信息。key:value的存储格式,任意存储内容。
.withClaim("editionSecretKey", edition.getEditionSecretKey())
.withClaim("catalogueVersions", edition.getCatalogueVersions())
// .withClaim("id", user.get("id").toString())
//使用定义好的签名算法
.sign(algorithm);
return token;
} //判断秘钥是否存在
public static Boolean verifyToken(String token){
try {
Algorithm algorithm = Algorithm.HMAC256("secret"); //use more secure key
//创建jwt的解密对象
JWTVerifier verifier = JWT.require(algorithm)
//注意 解密的签发人要与加密的签发人保持一致
.withIssuer("test")
.build(); //Reusable verifier instance
//对token进行解密
DecodedJWT jwt = verifier.verify(token);
return true;
}catch (Exception e){
return false;
}
} //把token秘钥里的catalogueVersions解密
public static Integer getCatalogueVersions(String token) {
//声明签名算法,注意:加密的密钥与解密的密钥保持一致,如果没有一致则无法解密
Algorithm algorithm = Algorithm.HMAC256("secret"); //use more secure key
//创建jwt的解密对象
JWTVerifier verifier = JWT.require(algorithm)
//注意 解密的签发人要与加密的签发人保持一致
.withIssuer("test")
.build(); //Reusable verifier instance
//对token进行解密
DecodedJWT jwt = verifier.verify(token);
//我们就可以从jwt中获取到自定义的用户名称
System.out.println("图书秘钥:"+jwt.getClaim("editionSecretKey").asString());
System.out.println("catalogueVersions:"+jwt.getClaim("catalogueVersions").asInt());
return jwt.getClaim("catalogueVersions").asInt();
}
}

  

JWT用户认证体系的更多相关文章

  1. DRF的JWT用户认证

    目录 DRF的JWT用户认证 JWT的认证规则 JWT的格式 JWT认证的流程 JWT模块的导入为 JWT的使用 DRF的JWT用户认证 从根本上来说,JWT是一种开放的标准(RFC 7519), 全 ...

  2. [django]前后端分离之JWT用户认证

    在前后端分离开发时为什么需要用户认证呢?原因是由于HTTP协定是不储存状态的(stateless),这意味着当我们透过帐号密码验证一个使用者时,当下一个request请求时它就把刚刚的资料忘了.于是我 ...

  3. 前后端分离之JWT用户认证(转)

    在前后端分离开发时为什么需要用户认证呢?原因是由于HTTP协定是不储存状态的(stateless),这意味着当我们透过帐号密码验证一个使用者时,当下一个request请求时它就把刚刚的资料忘了.于是我 ...

  4. 前后端分离之JWT用户认证zf

    在前后端分离开发时为什么需要用户认证呢?原因是由于HTTP协定是不储存状态的(stateless),这意味着当我们透过帐号密码验证一个使用者时,当下一个request请求时它就把刚刚的资料忘了.于是我 ...

  5. [转] 前后端分离之JWT用户认证

    [From] http://www.jianshu.com/p/180a870a308a 在前后端分离开发时为什么需要用户认证呢?原因是由于HTTP协定是不储存状态的(stateless),这意味着当 ...

  6. 前后端分离之JWT用户认证

    在前后端分离开发时为什么需要用户认证呢?原因是由于HTTP协定是不储存状态的(stateless),这意味着当我们透过帐号密码验证一个使用者时,当下一个request请求时它就把刚刚的资料忘了.于是我 ...

  7. Cookie、Session、Token那点事儿和前后端分离之JWT用户认证

    (两篇文章转自:https://www.jianshu.com/p/bd1be47a16c1:https://www.jianshu.com/p/180a870a308a) 什么是Cookie? Co ...

  8. 用户认证(Authentication)进化之路:由Basic Auth到Oauth2再到jwt

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_98 用户认证是一个在web开发中亘古不变的话题,因为无论是什么系统,什么架构,什么平台,安全性是一个永远也绕不开的问题 在HTTP ...

  9. JWT 实现基于API的用户认证

    基于 JWT-Auth 实现 API 验证 如果想要了解其生成Token的算法原理,请自行查阅相关资料 需要提及的几点: 使用session存在的问题: session和cookie是为了解决http ...

  10. 基于JWT标准的用户认证接口实现

    前面的话 实现用户登录认证的方式常见的有两种:一种是基于 cookie 的认证,另外一种是基于 token 的认证 .本文以基于cookie的认证为参照,详细介绍JWT标准,并实现基于该标签的用户认证 ...

随机推荐

  1. stm32f030 模拟IIC

    #define read_SDA (GPIOA->IDR&GPIO_Pin_10) >>10 //PA10 SDA#define set_SDA GPIO_SetBits(G ...

  2. 2022-04-15内部群每日三题-清辉PMP

    1.由于关键路径上一个任务估计错误,项目落后于进度,项目经理应该怎么做? A.向客户解释这个问题,并告知他们预计将延期多长时间. B.要求团队成员向客户解释为什么会错误估计该任务. C.分析快速跟进或 ...

  3. hive支持的压缩算法

    压缩格式的设置 set mapred.output.compression= 压缩格式 工具 算法 扩展名 是否支持分割 Hadoop编码/解码器 default deflate .deflate N ...

  4. 转L:[JAVA基础] 成员变量和局部变量(一看就懂的总结归纳篇)

    [JAVA基础] 成员变量和局部变量(一看就懂的总结归纳篇) JVM--Java虚拟机详解

  5. windows下解决mysql5中文乱码的问题

    1.问题描述:一开始无论是在命令行,还是在mysql的客户端输入中文都会出现 "???" 问题之类的乱码问题: 2.解决办法: 1)cmd 进入mysql ,命令mysql -ur ...

  6. rpm制作(简)

    yum -y install gcc prec-devel openssl-devel zlib-devel yum -y install rpm-build #生成工作目录 rpmdev-setup ...

  7. MSSQL 查看数据库所有的触发器

    SELECT object_name(a.parent_obj) as [表名] ,a.name as [触发器名称] ,(case when b.is_disabled=0 then '启用' el ...

  8. win10下载jdk并配置环境变量

    win10下载jdk并配置环境变量 1. jdk下载 下载官网:Java SE开发套件15.0.2 2. jdk安装 一直点下一步就可以 3. 环境变量 配置 右键我的电脑--属性--高级系统设置-- ...

  9. zk中控考勤机默认密码登陆

    网络空间搜索: app="ZKTECO-考勤管理系统" 找到某一个考勤系统 进行弱口令登陆:admin/****** 成功! End!!!

  10. 迭代器简易用法Iterator

    1 public static void main(String[] args) { 2 List<String> list = Arrays.asList("111" ...