SpringSecirity(四)——用户退出

news/2024/10/22 1:42:29/

因为JWT是无状态的,去中心化的,在服务器端无法清除,服务器一旦进行颁发,就只能等待自动过期 才会失效,所以需要redis配合才能完成登录状态的记录。

实现思路: 登录后在redis中添加一个白名单,把认证成功的用户的JWT添加到redis中。

在退出的时候,服务清空springsecurit保存认证通过的Authentication对象,其次在redis中进行删除。

(1)改造登录接口

保存至redis时,加上截止时间。

(2)退出后台代码实现

    /*** 用户退出*/@PostMapping("/logout")public R logout(HttpServletRequest request, HttpServletResponse response) {//获取tokenString token = request.getParameter("Authorization");//如果没有从头部获取token,那么从参数里面获取if (ObjectUtils.isEmpty(token)) {token = request.getHeader("Authorization");}//获取用户相关信息Authentication authentication= SecurityContextHolder.getContext().getAuthentication();if (authentication != null) {//清空用户信息new SecurityContextLogoutHandler().logout(request, response,authentication);//清空redis里面的tokenString key = "token_" + token;stringRedisTemplate.delete(key);}return R.ok().message("用户退出成功");}

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

相关文章

LeetCode23. 合并 K 个升序链表(2024秋季每日一题 36)

给你一个链表数组,每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中,返回合并后的链表。 示例 1: 输入:lists [[1,4,5],[1,3,4],[2,6]] 输出:[1,1,2,3,4,4,5,6] 解释:链表数组如下&#…

GS-LRM: Large Reconstruction Modelfor 3D Gaussian Splatting 论文解读

目录 一、概述 二、相关工作 1、多视图的三维重建 2、前馈重建 三、LRM 1、编码器 2、解码器 3、NeRF渲染 四、GS-LRM 1、输入处理 2、Transformer 3、损失函数 五、实验 六、局限 一、概述 该论文提出了一种利用稀疏输入图像高效预测3D高斯原语的方法&#xff…

Qt C++设计模式->中介者模式

中介者模式(Mediator Pattern)是一种行为型设计模式,定义了一个对象用于封装一系列对象之间的交互。中介者使得对象之间不再需要显式地相互引用,减少了对象之间的依赖关系,从而使系统更加松散耦合,并且可以…

前端框架对比与选择:详尽分析

1. 引言 随着互联网技术的飞速发展,前端开发技术也得到了迅猛提升。无论是大型企业还是中小型开发团队,使用前端框架来简化开发过程、提升开发效率已成为一种普遍现象。如今,市场上有众多的前端框架可供选择,如React、Vue.js、Angular等,如何在这些框架中进行选择成为了开…

牛客编程初学者入门训练——BC8 牛牛的字符菱形

BC8 牛牛的字符菱形 描述: 牛牛尝试用键盘读入一个字符,然后在屏幕上显示一个用这个字符填充的对角线长5个字符,倾斜放置的菱形。 输入描述: 输入一个char类型字符 输出描述: 输出一个用这个字符填充的对角线长5…

【ShuQiHere】 K-means 聚类算法详解:公式、代码与实战

🧠 【ShuQiHere】 🎓 目录 📜 K-means 简介K-means 工作原理理论基础 3.1 目标函数3.2 距离度量 K-means 算法步骤 4.1 具体代码实现 K-means 的优缺点如何选择正确的 K 值K-means 的改进与变体案例分析:如何使用 K-means 聚类&…

HTML,JavaScript,PHP,CSS,XML,SQL的区别和联习

HTML超文本标记语言——HyperText Markup Language)是构成 Web 世界的一砖一瓦。它定义了网页内容的含义和结构。除 HTML 以外的其他技术则通常用来描述一个网页的表现与展示效果(如 CSS),或功能与行为(如 JavaScript&…

SpringBoot 集成GPT实战,超简单详细

Spring AI 介绍 在当前的AI应用开发中,像OpenAI这样的GPT服务提供商主要通过HTTP接口提供服务,这导致大部分Java开发者缺乏一种标准化的方式来接入这些强大的语言模型。Spring AI Alibaba应运而生,它作为Spring团队提供的一个解决方案&…