JWT用户认证体系
依赖
<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用户认证体系的更多相关文章
- DRF的JWT用户认证
目录 DRF的JWT用户认证 JWT的认证规则 JWT的格式 JWT认证的流程 JWT模块的导入为 JWT的使用 DRF的JWT用户认证 从根本上来说,JWT是一种开放的标准(RFC 7519), 全 ...
- [django]前后端分离之JWT用户认证
在前后端分离开发时为什么需要用户认证呢?原因是由于HTTP协定是不储存状态的(stateless),这意味着当我们透过帐号密码验证一个使用者时,当下一个request请求时它就把刚刚的资料忘了.于是我 ...
- 前后端分离之JWT用户认证(转)
在前后端分离开发时为什么需要用户认证呢?原因是由于HTTP协定是不储存状态的(stateless),这意味着当我们透过帐号密码验证一个使用者时,当下一个request请求时它就把刚刚的资料忘了.于是我 ...
- 前后端分离之JWT用户认证zf
在前后端分离开发时为什么需要用户认证呢?原因是由于HTTP协定是不储存状态的(stateless),这意味着当我们透过帐号密码验证一个使用者时,当下一个request请求时它就把刚刚的资料忘了.于是我 ...
- [转] 前后端分离之JWT用户认证
[From] http://www.jianshu.com/p/180a870a308a 在前后端分离开发时为什么需要用户认证呢?原因是由于HTTP协定是不储存状态的(stateless),这意味着当 ...
- 前后端分离之JWT用户认证
在前后端分离开发时为什么需要用户认证呢?原因是由于HTTP协定是不储存状态的(stateless),这意味着当我们透过帐号密码验证一个使用者时,当下一个request请求时它就把刚刚的资料忘了.于是我 ...
- Cookie、Session、Token那点事儿和前后端分离之JWT用户认证
(两篇文章转自:https://www.jianshu.com/p/bd1be47a16c1:https://www.jianshu.com/p/180a870a308a) 什么是Cookie? Co ...
- 用户认证(Authentication)进化之路:由Basic Auth到Oauth2再到jwt
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_98 用户认证是一个在web开发中亘古不变的话题,因为无论是什么系统,什么架构,什么平台,安全性是一个永远也绕不开的问题 在HTTP ...
- JWT 实现基于API的用户认证
基于 JWT-Auth 实现 API 验证 如果想要了解其生成Token的算法原理,请自行查阅相关资料 需要提及的几点: 使用session存在的问题: session和cookie是为了解决http ...
- 基于JWT标准的用户认证接口实现
前面的话 实现用户登录认证的方式常见的有两种:一种是基于 cookie 的认证,另外一种是基于 token 的认证 .本文以基于cookie的认证为参照,详细介绍JWT标准,并实现基于该标签的用户认证 ...
随机推荐
- 关于el-dialog弹窗组件关闭报错事件
以下写法,向父组件抛出关闭事件, (正常点击弹窗footer的关闭时没有报错,但是点击空白处及右上角的×号,就会报以上错误) 原因, close事件为已经关闭了弹窗后的事件,官方还给出了 befor ...
- Docker安装 Redis Stack(开发适配-提供 Redis Stack 服务器和RedisInsight可视化) (6.2.4-v2版本)
一.使用docker安装(开发适配-提供 Redis Stack 服务器和RedisInsight) (6.2.4-v2版本) 简介 安装命令根据实际部署情况调整 版本地址:官方镜像主页 | 发布版T ...
- unity Dotween Path 设置路径平滑加旋转平滑
Waiter.transform.DOPath(list.ToArray(), 3f * (index / 2.0f + 1.0f), PathType.CatmullRom).SetLookAt(0 ...
- elementUi - 页面设计规范
elementUi - 页面设计规范 参考资料 element 字体 Font-family 代码 font-family: "Helvetica Neue",Helvetica, ...
- MindManager离线安装包官网下载
软件官网:https://www.mindjet.com/ 注意:不建议在思杰马克丁及其相关合作网站下载该软件,更不建议在其旗下站点购买该软件授权. 目前来说,官网正常下载的话它会要求你填写一些信息, ...
- PostScript语言教程(六、图形变换)
6.1.坐标系变换 POSTSCRIPT图形操作是在一个坐标系中,这个坐标系被称为用户坐标系或用户空间,该坐标系独立于任何物理设备.POSTSCRIPT在用户空间中进行绘制,并将结果传输到特定的打印机 ...
- 基于Python的简单读卡上位机界面
使用到的模块,pyserial pyqt5 pymysql (我先是实现在命令行下通过串口进行对板子硬件的控制,比如Led ,beep等,在实现检测卡(是否选卡成功),连接卡(验证哪一个扇区),读 ...
- Python数据挖掘——银行分控模型的建立
数据初始化 import pandas as pd from keras.models import Sequential from keras.layers.core import Dense, A ...
- bzoj 3561
题意:求$\sum_{i=1}^{n}\sum_{j=1}^{n}lcm(i,j)^{gcd(i,j)}$ 神仙题... 首先可能会想到一个转化,就是$lcm(i,j)=\frac{ij}{gcd(i ...
- tensorflow疑问总结
1.sigmoid 函数为什么不好? (1)激活函数计算量大(在正向传播和反向传播中都包含幂运算和除法) (2)反向传播求误差梯度时,求导涉及除法 (3)Sigmoid倒数取值范围是[0,0.25], ...