依赖

        <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. python实现字典的排序

    var dic = {c:4, a:2, d:3, b:1}; // 定义一个字典 console.log("输出最初的字典元素: "); for(var key in dic){ ...

  2. 语言-页面-模板-Velocity

    Velocity教程 - 简书 (jianshu.com) Velocity模板引擎详解 - Velocity 教程 | 编程字典 (codingdict.com) Velocity模板(VM)语言介 ...

  3. rabbitmq 使用管理页面向队列中推送消息

    参考:https://blog.csdn.net/weixin_43343423/article/details/103382661

  4. js下载文件防止白屏

    思路:用js创建一个iframe,让后指定src为下载目录. var ifup = document.getElementById("xman-activity-export-downLoa ...

  5. .gitignore忽略文件无效的解决办法

    .gitignore中已经标明忽略的文件目录下的文件,git push的时候还会出现在push的目录中,原因是因为在git忽略目录中,新建的文件在git中会有缓存,如果某些文件已经被纳入了版本管理中, ...

  6. 基础vue的一些知识补充

    一.:disabled 该属性能接受布尔值,可以用于元素的使用.当值为true时,该元素将无法被使用,如button的disabled属性被设置为true后,将无法被点击,input的disabled ...

  7. C#/.Net 部分缩写

    CTS(Common Type System):通用类型系统:指定最基本类型便于.Net Framework的各种语言之间进行交互. CLR(Common Language Runtime):.Net ...

  8. postcss-px-to-viewport适配屏幕大小

    1.postcss-px-to-viewport适配的介绍 postcss-px-to-viewport是一个插件,用起来非常方便,安装一下插件,搞个配置文件就可以直接用了. 2.postcss-px ...

  9. 2003031126-石升福-python数据分析第四周作业-第二次作业

    项目 matplotlib 博客名称 2003031126-石升福-Python数据分析第四周作业 班级链接 20级数据班 作业链接 第二次作业 要求 每道题要有题目,代码(使用插入代码,不会插入代码 ...

  10. 【分享】HMCL启动器

    HMCL-3.3.173.exe 链接:https://pan.baidu.com/s/1KpEm3K0asNhPAXjufsCGIA 提取码:93kr