做图神器的网站商场设计平面布置图

news/2025/10/1 4:39:46/文章来源:
做图神器的网站,商场设计平面布置图,无锡百姓网免费发布信息网,qq网页版 登陆应用场景 当用户登录状态到登出状态时#xff0c;对应的JWT的令牌需要设置为失效状态#xff0c;这时可以使用基于 Redis 的黑名单方案来实现JWT令牌失效。 基于 Redis 的黑名单方案 当用户需要登出系统时#xff0c;将用户携带的Token进行解析#xff0c;解码出JWT令牌…应用场景 当用户登录状态到登出状态时对应的JWT的令牌需要设置为失效状态这时可以使用基于 Redis 的黑名单方案来实现JWT令牌失效。 基于 Redis 的黑名单方案 当用户需要登出系统时将用户携带的Token进行解析解码出JWT令牌取出对应的 UUID 和 过期时间 用过期的时间减去当前的时间计算出这个Key的过期时间再以这两个字段拼接作为 Key 并设置好过期时间存储到 Redis 中如果有黑客拿窃取出来的JWT令牌进行登录只要判断这个JWT令牌是否在黑名单就可以。 实现步骤 1.获得携带的Token解析并取出JWT令牌的代码 这段代码实现了对指定 JWT 的验证和使令牌失效的操作。 首先通过调用 convertToken(headerToken) 方法将传入的头部令牌 headerToken 转换成实际的 JWT 字符串 token。然后使用 HMAC256 算法和预设的密钥 key 创建一个算法实例 algorithm。接下来使用算法实例 algorithm 构建一个 JWT 验证器 jwtVerifier。这个验证器将用于验证 JWT 的有效性。在 try-catch 块中首先通过调用 jwtVerifier.verify(token) 方法对 JWT 进行验证。如果验证成功则返回一个 DecodedJWT 对象 verify其中包含了 JWT 的解码信息如令牌的唯一标识符ID和过期时间等。接着调用 deleteToken(verify.getId(), verify.getExpiresAt()) 方法来删除指定令牌并将其加入到黑名单中进行失效处理。这里使用了 verify 对象中的 ID 和过期时间作为参数。最后如果在验证 JWT 过程中发生了 JWTVerificationException 异常即 JWT 验证失败则捕获该异常并返回 false 表示令牌失效操作失败。 /*** 让指定Jwt令牌失效* param headerToken 请求头中携带的令牌* return 是否操作成功*/public boolean invalidateJwt(String headerToken){String token this.convertToken(headerToken);Algorithm algorithm Algorithm.HMAC256(key);JWTVerifier jwtVerifier JWT.require(algorithm).build();try {DecodedJWT verify jwtVerifier.verify(token);return deleteToken(verify.getId(), verify.getExpiresAt());} catch (JWTVerificationException e) {return false;}} 2.检查指定 UUID 的令牌是否为无效的已加入黑名单 这段代码用于检查指定 UUID 的令牌是否为无效的已加入黑名单通过判断 Redis 数据库中是否存在相应的键来决定令牌的有效性。如果键存在则表示令牌已失效如果键不存在则表示令牌仍然有效。 /*** 验证Token是否被列入Redis黑名单* param uuid 令牌ID* return 是否操作成功*/private boolean isInvalidToken(String uuid){return Boolean.TRUE.equals(template.hasKey(Const.JWT_BLACK_LIST uuid));} 3.将Token列入Redis黑名单中 这段代码实现了对指定令牌的删除和加入黑名单的操作用于管理令牌的有效性和安全性。 首先通过调用 isInvalidToken(uuid) 方法来检查指定的 UUID 是否为无效的令牌。如果 isInvalidToken 方法返回 true则说明该令牌无效此时直接返回 false不执行后续操作。获取当前时间 now然后计算令牌的过期时间与当前时间的差值并取最大值作为令牌的失效时间 expire。这里使用了 Math.max 方法来确保失效时间不会小于 0。最后通过 Redis 的 template 对象调用 opsForValue().set() 方法将指定 UUID 的令牌加入到名为 Const.JWT_BLACK_LIST uuid 的键中并设置过期时间为 expire 毫秒。这样就将该令牌加入到了黑名单中使其在一定时间后失效。最终方法返回 true 表示成功删除令牌并将其加入黑名单。 /*** 将Token列入Redis黑名单中* param uuid 令牌ID* param time 过期时间* return 是否操作成功*/private boolean deleteToken(String uuid, Date time){if(this.isInvalidToken(uuid))return false;Date now new Date();long expire Math.max(time.getTime() - now.getTime(), 0);template.opsForValue().set(Const.JWT_BLACK_LIST uuid, , expire, TimeUnit.MILLISECONDS);return true;} public final class Const {//JWT令牌public final static String JWT_BLACK_LIST jwt:blacklist:;public final static String JWT_FREQUENCY jwt:frequency:; } 对应完整的代码如下 Component public class JwtUtils {Autowiredprivate StringRedisTemplate template;Value(${spring.security.jwt.key})String key;Value(${spring.security.jwt.expire})int expire;/*** 让指定Jwt令牌失效* param headerToken 请求头中携带的令牌* return 是否操作成功*/public boolean invalidateJwt(String headerToken){String token this.convertToken(headerToken);Algorithm algorithm Algorithm.HMAC256(key);JWTVerifier jwtVerifier JWT.require(algorithm).build();try {DecodedJWT verify jwtVerifier.verify(token);return deleteToken(verify.getId(), verify.getExpiresAt());} catch (JWTVerificationException e) {return false;}}/*** 将Token列入Redis黑名单中* param uuid 令牌ID* param time 过期时间* return 是否操作成功*/private boolean deleteToken(String uuid, Date time){if(this.isInvalidToken(uuid))return false;Date now new Date();long expire Math.max(time.getTime() - now.getTime(), 0);template.opsForValue().set(Const.JWT_BLACK_LIST uuid, , expire, TimeUnit.MILLISECONDS);return true;}/*** 验证Token是否被列入Redis黑名单* param uuid 令牌ID* return 是否操作成功*/private boolean isInvalidToken(String uuid){return Boolean.TRUE.equals(template.hasKey(Const.JWT_BLACK_LIST uuid));}public DecodedJWT resolveJwt(String headerToken) {String token this.convertToken(headerToken);if (token null) {return null;}Algorithm algorithm Algorithm.HMAC256(key);JWTVerifier jwtVerifier JWT.require(algorithm).build();try {DecodedJWT verify jwtVerifier.verify(token);if(this.isInvalidToken(verify.getId())) return null;Date expireAt verify.getExpiresAt();return new Date().after(expireAt) ? null : verify;} catch (JWTVerificationException e) {return null;}}public UserDetails toUser(DecodedJWT jwt) {MapString, Claim claims jwt.getClaims();return User.withUsername(claims.get(name).asString()).password(********).authorities(claims.get(authorities).asArray(String.class)).build();}public Integer toId(DecodedJWT jwt) {MapString, Claim claims jwt.getClaims();return claims.get(id).asInt();}public String createJwt(UserDetails details, int id, String username) {Algorithm algorithm Algorithm.HMAC256(key);Date expire this.expireTime();return JWT.create().withJWTId(UUID.randomUUID().toString()).withClaim(id, id).withClaim(name, username).withClaim(authorities, details.getAuthorities().stream().map(GrantedAuthority::getAuthority).toList()).withExpiresAt(expire).withIssuedAt(new Date()).sign(algorithm);}public Date expireTime() {Calendar calendar Calendar.getInstance();calendar.add(Calendar.HOUR, expire * 24);return calendar.getTime();}private String convertToken(String headerToken) {if(headerToken null || !headerToken.startsWith(Bearer )) {return null;}return headerToken.substring(7);} }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/923499.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

net网站开发参考文献抖音做我女朋友好不好网站

由于不同的需求,我们站长朋友们建站所用的网站程序也不尽相同,有PHP、ASP和ASP.NET等。Godaddy美国主机作为全球最大域名主机商,当之无愧成为站长使用最多的主机。不少朋友应该都知道不同的网站程序对于PHP和ASP的版本要求又不一样&#xff0…

旅行社网站建设方案书三只松鼠软文范例500字

文章目录 前言一、基本概念1、xacro2、Gazebo 加载单个机器人模型 二、原先launch文件代码三、 修改launch文件加载多个机器人总结 前言 单个机器人的各项仿真实验都基本完成,也实现了远程控制,接下来主要对多机器人编队进行仿真实验,在进行…

做平团的网站响应式 购物网站模板

LGY 、LGL零序过电压继电器 系列型号 LGY-110零序过电压继电器; LGL-110零序过电压继电器; LGL-110/AC零序过电压继电器; LGL-110静态零序过电流继电器 1 应用 LGL-110 型零序过电流继电器用作线路和电力设备的零序过电流保护。…

网站建设项目的预算家居企业网站建设案例

1.关于使用Git小乌龟无法弹出Add菜单的问题 第一次使用小乌龟软件,发现可以正常将程序从Gitee仓库中克隆到本地,但是在将本地的程序上传到Gitee仓库中时,TortoiseGit无法弹出Add那一系列菜单,如下图所示: 2.解决方法 …

网站开发需要注意的链接制作网站

matlab 串口编程由于项目需要,用matlab 做了一个串口通信工具,也碰到不少坑。这里总结一下。读取串口数据matlab 支持串口通信,因此直接调用串口的结构体serial就可以,在调用之前,需要对串口属性进行设置。delete(inst…

西安网站公司排名第三方网站宣传怎么做

1、安装gcc编辑器 安装redis需要依赖gcc环境,执行如下命令安装: yum install -y gcc如果机器没有网络的话,可以参考这篇文章: CentOS离线安装gcc环境(附安装包图文并茂) 2、下载redis安装包 redis官网:https://re…

威海 网站开发女性时尚网站带论坛php程序

文章目录一、消费者监听1. 启动zk2. 启动kafka3. 创建主题4. 消费者监听消息二、生产者工程2.1. 依赖2.2. 生产者代码(同步)2.3. 生产者代码(异步)2.4. 发送消息2.5. 消费者监听消息2.6. 结果返回一、消费者监听 1. 启动zk zkSe…

做网站需多少钱开封 网站建设 网络推广

获取用户信息 // 获取安全上下文对象,就是那个保存在 ThreadLocal 里面的安全上下文对象 // 总是不为null(如果不存在,则创建一个authentication属性为null的empty安全上下文对象) SecurityContext securityContext SecurityContextHolder.getContext(…

网站建设的功能描述上海小程序设计

导言: 在当今数字化时代,.mallab勒索病毒以其险恶的特性和神秘的名称引起了广泛关注。为了更深入了解这种威胁,我们需要揭示.mallab勒索病毒背后的神秘面纱,了解它的运作方式以及预防它的方法。如果受感染的数据确实有恢复的价值…

太原网站空间不断推进门户网站建设

今后的推进计划方针 信息数学物理 信息 线段树,其它的随缘。 数学 三角函数(必修3)-> 对数函数和指数函数 物理 随缘

山西住房与城乡建设厅定额网站中国城乡建设协会网站

在产品管理的世界里,产品就像有生命的个体,经历着从诞生到消亡的过程。作为产品经理,深刻理解产品的四个生命周期 —— 引入期、成长期、成熟期和衰退期,是打造成功产品的关键。 引入期:破局的起点 对于 B 端产品而言&…

网站开发时如何设计英文版本小程序登录入口官网网址

Android常用开源项目 Android 2014-05-23 16:39:43 发布您的评价: 4.3 收藏 24收藏Android开源项目第一篇——个性化控件(View)篇包括ListView、ActionBar、Menu、ViewPager、Gallery、GridView、ImageView、ProgressBar、TextView、其他Android开源项目第二篇——工具库…

nodejs可以做企业网站吗苏州保洁公司多少钱一个平方

来源:OneFlow社区作者:River Riddle、Eric Johnson、Abdul Dakak翻译:胡燕君、杨婷机器学习模型逐渐发展成人们口中的“庞然大物”。全球顶尖的科技公司纷纷踏上“军备竞赛”之路,立志训练出规模最大的模型(MUM、OPT、…

洛阳网站建站网站开发原型

在PHP中,数组排序是一项常见且重要的操作,它允许开发者根据一定的规则对数组中的元素进行排序。PHP提供了多种数组排序函数,以适应不同的排序需求。这些函数包括基本的升序和降序排序,以及基于特定键值、自定义排序逻辑等的复杂排…

毕业设计网站开发要做什么网站类型分析

叉车被广泛应用于工厂车间、仓库、流通中心和配送中心等,大大提高了对成件托盘货物进行装卸、堆垛和短距离运输作业的运输效率,几乎是所有车间必不可少的运输工具。但目前,简单方便的同时,安全事故(剐蹭、碰撞、碾压、撞车等)却也…

网站经营性备案难不难新乡网页设计公司

在插入空白行的时候,如果是在画好的表格下插入,api提供的插入空白行会插入没有任何格式的一行,无法匹配合并了单元格的表格格式,需要手动编写api 1.找到api.js,在src/global中,新增一个方法 /*** 复制有合并单元格的…

南通网站建设公司排名如何做自己网站

文章目录 环境搭建开发与组件使用性能优化与监控安全与隐私总结 🎈个人主页:程序员 小侯 🎐CSDN新晋作者 🎉欢迎 👍点赞✍评论⭐收藏 ✨收录专栏:大数据系列 ✨文章内容: 🤝希望作者…

ai设计网站手机访问另一部手机访问文件

小菜鸟一枚,学习cocos2d-x已经有一段时间了,感觉进度非常慢那,CSDN也再次拾了起来。近期自己还在学习做小游戏,跟着前辈做了《忍者打怪物》的小游戏,又学习了瓦片游戏《吃西瓜》,打算自个做个坦克大战&…

soho网站建设医疗公司logo设计图片

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…