生成JWT token

news/2024/11/23 23:11:05/

JWT token生成

需求:生成和原来生成的token兼容的token
注意点:1.token的格式一样 2.算法一样 3.密钥一样

JWT token生成例子

//生成token,验证token工具类
@Component
class Token {/*** token 密钥*/private val JWT_SECRET = "test"/*** token 过期时间(30天)*/private val calendarField = Calendar.DATEprivate val calendarInterval = 30private val algorithm = Algorithm.HMAC256(JWT_SECRET)// header Mapprivate val map: MutableMap<String, Any> = HashMap()private fun createTokenBuilder(): JWTCreator.Builder {/** 加密方式  */map["alg"] = "HS256"map["typ"] = "JWT"// 设置过期时间val nowTime = Calendar.getInstance()nowTime.add(calendarField, calendarInterval) //前者为时间单位,后者时间数量val expiresDate = nowTime.timereturn JWT.create().withExpiresAt(expiresDate)}/*** 生成token** @param* @return*/fun createToken(uid: String?): String { //token保存的数据val builder = createTokenBuilder()return builder.withClaim("jti", uid).sign(algorithm)}// 解析fun verifyToken(token: String?): DecodedJWT? {var jwt: DecodedJWT? = nulltry {//解析方式和密钥val verifier = JWT.require(algorithm).build()val decodedJWT = JWT.decode(token)jwt = verifier.verify(decodedJWT)} catch (e: Exception) {e.printStackTrace()// token 校检失败}return jwt}}//配置token拦截器
class JwtInterceptor : HandlerInterceptor {@Autowiredprivate lateinit var tokenService: Tokenoverride fun preHandle(request: HttpServletRequest, response: HttpServletResponse, handler: Any): Boolean {// 从 http 请求头中取出 tokenval token = request.getHeader("refresh-token")println(token)// 如果不是映射到方法直接通过if (handler !is HandlerMethod) {return true}if (StringUtils.isBlank(token)) {throw RuntimeException("无token,请重新登录")}// 验证 tokentry {if (tokenService.verifyToken(token) == null) throw RuntimeException("token无效")println("token校验")} catch (e: JWTVerificationException) {throw RuntimeException("token失效,请重新登录")}return true}
}

参考网站:生成的token解析
使用JWT生成Token令牌


http://www.ppmy.cn/news/347204.html

相关文章

Python高光谱图像可视化展示

光谱图像的可视化 高光谱图像具有较高的光谱维度&#xff0c;无法像RGB图像一样直接进行可视化。 imgvision库用于进行图像处理与质量评价。该库仅基于Numpy库进行编写&#xff0c;通过矩阵的方式对图像进行快速处理&#xff0c;包括不限于光谱图像的不同光源下颜色空间转换、…

【自然语言处理与文本分析】中文分词的基本原理,如何进行词性标注 使用HMM算法提高准确率

分词&#xff08;中文&#xff09; 本次内容 分词&#xff1a; N-Gram vs.中文分词 分词的难点 法则式分词 统计式分词 词性标注&#xff1a; 词性标注简介 词性标注的难点 词性的种类及意义 保留某些词性的词 分词&#xff1a; N-Gram vs.中文分词 分词的难点 法…

终于Nikon的AF 28mm F1.4D的继承人来了

今天开会空闲&#xff0c;开了下dcwatch,盼了已久的Nikon终于发布广角1.4的镜头&#xff01; 不是28mm F1.4G&#xff0c;而是24mm F1.4G, 77mm滤镜口径&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;Oh my god!还好我的2814收的早&#xff0c;不到8k就收了&am…

摄影穷三代,单反毁一生!

摄影穷三代&#xff0c;单反毁一生 14天前&#xff1a;明天是还在外地读书的女朋友生日&#xff0c;买了个佳能50D套机[7800RMB]照点相片纪念。新机到手于是先跑到公园试拍&#xff0c;正在公园拍摄荷花的老头说佳能成像太肉&#xff0c;尼康比较锐利&#xff0c;还现场用事实说…

相机参数矩阵计算(内外矩阵)以及光束法平差

单应性矩阵由配对的内点计算出来 u,v是原始图片左边&#xff0c;对应得到变换后的图片坐标x,y,其中 变换矩阵可以拆成4部分&#xff0c;表示线性变换&#xff0c;比如scaling&#xff0c;shearing和ratotion。用于平移&#xff0c;产生透视变换。 重写之前的变换公式可以…

Matlab快速入门——矩阵的中级学习

学习目标&#xff1a;矩阵的中阶段学习和掌握 矩阵元素的查找 clear all; A[4 0 5;0 6 8;9 9 9] Bfind(A) %返回非0元素的位置 Cfind(A>5) %返回位置 DA(find(A>5)) A(find(A9))666 矩阵元素的排序 clear all; A[3 0 4;0 2 1;5 4 …

ASO优化之关于应用宝的关键词排名

应用宝是国内主要的安卓应用分发渠道之一&#xff0c;它的流量和影响力是非常大的。所以我们可以通过ASO优化&#xff0c;来提升应用宝关键词覆盖和排名&#xff0c;从而有利于应用可以获得稳定的自然下载量。 关键词覆盖要围绕元数据的优化&#xff08;包括应用名称&#xff…

<Android开发> 集成so库

&#xff1c;Android开发&#xff1e; 集成so库 &#xff1c;Android开发&#xff1e; HAL层集成第三方so库 一 前言 在笔者的另一个文章&#xff1c;Android开发&#xff1e; HAL层集成第三方so库 分析了如何在hal层将第三方的so库文件集成到系统中&#xff1b;本文其实与其…