当前位置: 首页 > news >正文

Spring Security 实现后台切换用户

Spring Security version 

后端代码:


/*** @author Jerry* @date 2024-03-28 17:47* spring security 切换账号*/@RestController
@RequiredArgsConstructor
@RequestMapping("api/admin")
public class AccountSwitchController {private final UserDetailsService userDetailsService;private final TokenComponent tokenComponent;private final SystemAdminService systemAdminService;@PostMapping("/switchAccount")public CommonResult<SystemLoginResponse> switchAccount(@RequestParam String username) {// 当前登录用户是否是超级管理员LoginUserVo loginUserVo = tokenComponent.getLoginUser(ServletUtils.getRequest());if (loginUserVo == null || loginUserVo.getUser().getId() != 1) {throw new TGOException("非法请求");}Authentication auth = SecurityContextHolder.getContext().getAuthentication();UserDetails targetUser = userDetailsService.loadUserByUsername(username);// 创建一个新的Authentication对象,使用目标用户的详情Authentication newAuth = new UsernamePasswordAuthenticationToken(targetUser, auth.getCredentials(), auth.getAuthorities());// 更新SecurityContextHolder中的认证信息SecurityContextHolder.getContext().setAuthentication(newAuth);LoginUserVo loginUser = (LoginUserVo) newAuth.getPrincipal();SystemAdmin systemAdmin = loginUser.getUser();String token = tokenComponent.createToken(loginUser);SystemLoginResponse systemAdminResponse = new SystemLoginResponse();systemAdminResponse.setToken(token);BeanUtils.copyProperties(systemAdmin, systemAdminResponse);//更新最后登录信息systemAdmin.setLoginCount(systemAdmin.getLoginCount() + 1);systemAdminService.updateById(systemAdmin);// 可以重定向到一个页面,以便更新页面上的用户信息return CommonResult.success(systemAdminResponse, "login success");}
}

 前端代码:

效果:

相关文章:

Spring Security 实现后台切换用户

Spring Security version 后端代码&#xff1a; /*** author Jerry* date 2024-03-28 17:47* spring security 切换账号*/RestController RequiredArgsConstructor RequestMapping("api/admin") public class AccountSwitchController {private final UserDetailsSe…...

《QT实用小工具·一》电池电量组件

1、概述 项目源码放在文章末尾 本项目实现了一个电池电量控件&#xff0c;包含如下功能&#xff1a; 可设置电池电量&#xff0c;动态切换电池电量变化。可设置电池电量警戒值。可设置电池电量正常颜色和报警颜色。可设置边框渐变颜色。可设置电量变化时每次移动的步长。可设置…...

基于springboot实现墙绘产品展示交易平台管理系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现墙绘产品展示交易平台管理系统演示 摘要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本墙绘产品展示交易平台就是在这样的大环境下诞生&…...

主流公链文章整理

主流公链文章整理 分类文章地址&#x1f349;BTC什么是比特币&#x1f96d;BTCBTC网络是如何运行的&#x1f351;BTC一文搞懂BTC私钥&#xff0c;公钥&#xff0c;地址&#x1f955;ETH什么是以太坊&#x1f336;️基础知识BTC网络 vs ETH网络&#x1f95c;CosmosCosmos介绍&a…...

css3之3D转换transform

css3之3D转换 一.特点二.坐标系三.3D移动&#xff08;translate3d)1.概念2.透视&#xff08;perpective)(近大远小&#xff09;&#xff08;写在父盒子上&#xff09; 四.3D旋转&#xff08;rotate3d)1.概念2.左手准则3.呈现&#xff08;transfrom-style)&#xff08;写父级盒子…...

SpringBoot -- 外部化配置

我们如果要对普通程序的jar包更改配置&#xff0c;那么我们需要对jar包解压&#xff0c;并在其中的配置文件中更改配置参数&#xff0c;然后再打包并重新运行。可以看到过程比较繁琐&#xff0c;SpringBoot也注意到了这个问题&#xff0c;其可以通过外部配置文件更新配置。 我…...

优酷动漫顶梁柱!神话大乱炖的修仙番为何火爆?

优酷动漫新晋顶梁柱&#xff0c;实时超160万在追的修仙番长啥样&#xff1f; 由优酷动漫联合玄机科技打造的《师兄啊师兄》俨然成为了国漫界一颗璀璨的新星。自去年开播以来热度口碑双丰收&#xff0c;今年在播的第二季人气更是节节攀升&#xff0c;稳坐优酷动漫榜第一把交椅。…...

每日一题:C语言经典例题之判断实数相等

题目&#xff1a; 从键盘输入两个正实数&#xff0c;位数不超过200&#xff0c;试判断这两个实数是否完全相等。注意输入的实数整数部分可能有前导0&#xff0c;小数部分可能有末尾0。 输入 输入两个正实数a和b。 输出 如果两个实数相等&#xff0c;则输出Yes&#xff0c;…...

【算法每日一练]-数论(保姆级教程 篇1 埃氏筛,欧拉筛)

目录 保证给你讲透讲懂 第一种&#xff1a;埃氏筛法 第二种&#xff1a;欧拉筛法 题目&#xff1a;质数率 题目&#xff1a;不喜欢的数 思路&#xff1a; 问题&#xff1a;1~n 中筛选出所有素数&#xff08;质数&#xff09; 有两种经典的时间复杂度较低的筛法&#xff0…...

【剑指offr--C/C++】JZ59 滑动窗口的最大值

一、题目 二、思路及代码 暴力解法是依次往后滑动一位&#xff0c;然后比较窗口内的值。 我这里考虑&#xff1a;窗口每次往后移动一位&#xff0c;那么如果当前窗口的最大值max在窗口内部&#xff0c;那么再滑动到下一个窗口的时候&#xff0c;窗口内只有最新进来的一个元素没…...

RabbitMQ Tutorial

参考API : Overview (RabbitMQ Java Client 5.20.0 API) 参考文档: RabbitMQ: One broker to queue them all | RabbitMQ 目录 结构 Hello World consumer producer 创建连接API解析 创建连接工厂 生产者生产消息 消费者消费消息 队列声明 工作队列Work Queues 公平…...

如何对Webpack进行优化

目录 1.优化-提取css代码 1.1. 插件 mini-css-extract-plugin 1.2. 步骤&#xff1a; 1.3. 注意 1.4. 好处 1.5. 练习 2. 优化-css代码提取后压缩 2.1. 问题引入 2.2. 解决 2.3. 步骤 3. Webpack打包less代码 3.1. 加载器 less-loader 3.2. 步骤 3.3. 注意&#xf…...

nut-ui中的menu 菜单组件的二次封装

这个菜单组件 一般可以直接用到项目里 如果复用性不强的话 直接使用 但是有一个问题 如果很多地方都需要用到这个组件 我们可以把这个组件二次封装一下 <template><div class"cinema-search-filter-component"><nut-menu><template #icon>&…...

python笔记(11)序列

Python中的“序列”是一个广义术语&#xff0c;用于描述一种特定的数据结构&#xff0c;它具备以下共同特征&#xff1a; 有序性&#xff1a;序列中的元素按照特定的顺序排列&#xff0c;每个元素在序列中都有一个确定的位置&#xff0c;即索引。 索引访问&#xff1a;通过索引…...

Rust egui(4) 增加自己的tab页面

如下图&#xff0c;增加一个Sins也面&#xff0c;里面添加一个配置组为Sin Paraemters&#xff0c;里面包含一个nums的参数&#xff0c;范围是1-1024&#xff0c;根据nums的数量&#xff0c;在Panel中画sin函数的line。 demo见&#xff1a;https://crazyskady.github.io/index.…...

小组分享第二部分:Jsoup

1.Jsoup是什么&#xff1a; 是HTML的解析器,可以解析URL地址&#xff0c;HTML的文本内容&#xff0c;可以使用DOM,CSS以及类似Jquery的操作方法来操作数据 2.Jsoup的作用 1.通过URL或者文件或者字符串获取到HTML页面并解析 2.使用DOM或CSS等操作来对数据进行操作 3.可以操作HT…...

C#(winform) 调用MATLAB函数

测试环境 VisualStudio2022 / .NET Framework 4.7.2 Matlab2021b 参考&#xff1a;C# Matlab 相互调用 Matlab 1、编写Matlab函数 可以没有任何参数单纯定义matlab处理的函数&#xff0c;输出的数据都存在TXT中用以后期读取数据 function [result,m,n] TEST(list) % 计算…...

Kubernetes探索-Pod面试(补充)

针对上篇文章"kubernetes探索-Pod面试"做一点点补充... 1. 简述Pod的删除流程 1) kube-apiserver接收到用户的删除指令&#xff0c;默认等待30s(优雅退出时间)&#xff0c;随后认为pod已死亡&#xff0c;将其标记为Terminating状态&#xff1b; 2) kubelet监控到pod…...

深入了解JUnit 5:新一代Java单元测试框架

深入了解JUnit 5&#xff1a;新一代Java单元测试框架 近年来&#xff0c;Java领域的单元测试框架发展迅速&#xff0c;而JUnit 5作为JUnit系列的最新版本&#xff0c;为开发人员提供了更多的功能和灵活性。在本文中&#xff0c;我们将介绍JUnit 5&#xff0c;并探讨其与JUnit 4…...

2024年清明节安装matlab 2024a

下载安装离线支持包SupportSoftwareDownloader_R2024a_win64&#xff0c;地址https://ww2.mathworks.cn/support/install/support-software-downloader.html&#xff0c;运行软件&#xff08;自解压运行&#xff09;&#xff0c;登录账号&#xff08;需要提前在官网注册&#x…...

Captain AI vs DeepSeek:Ozon 卖家专属 AI,垂直深耕更懂俄语区

做Ozon跨境&#xff0c;选 AI 工具别只看 “全能”&#xff0c;更要看 “专业”和“精通”。DeepSeek 是通用型跨境AI&#xff0c;覆盖多平台、多场景&#xff1b;而Captain AI是Ozon垂直定制 AI&#xff0c;聚焦俄语区与Ozon规则&#xff0c;四大核心功能精准解决卖家从新品到…...

基于YOLOv11深度学习的花卉识别检测系统(YOLOv11+YOLO数据集+UI界面+登录注册界面+Python项目源码+模型)

一、项目介绍 花卉识别是计算机视觉在植物学领域的重要应用方向&#xff0c;对于植物分类研究、生态保护、园林管理等领域具有重要意义。然而&#xff0c;由于花卉种类繁多、形态各异&#xff0c;且受光照、角度、遮挡等因素影响&#xff0c;传统方法难以实现高效准确的识别。…...

springboot+vue基于web的社区交互图书管理系统的设计系统

目录同行可拿货,招校园代理 ,本人源头供货商系统功能模块划分关键技术实现数据库设计要点社区交互设计安全防护措施项目技术支持源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作同行可拿货,招校园代理 ,本人源头供货商 系统功能模块划分 后…...

NormalReconstructZ节点]原理解析与实际应用

的数据丢失问题&#xff0c;确保光照计算的准确性&#xff0c;是高质量实时渲染不可或缺的一环。该节点的设计充分考虑了现代图形硬件的特性&#xff0c;能够在保持高质量视觉效果的同时&#xff0c;显著降低内存带宽和存储空间的需求&#xff0c;特别适合移动平台和性能敏感的…...

Python高效实现:质因数分解的三种算法对比

1. 质因数分解&#xff1a;从数学概念到Python实现 质因数分解是数学中一个基础但重要的概念。简单来说&#xff0c;就是把一个正整数分解成若干个质数相乘的形式。比如数字28可以分解为227&#xff0c;这里的2和7都是质数&#xff0c;也就是28的质因数。这个概念在密码学、数据…...

Python实战:利用SymPy与SciPy高效破解复杂非线性方程组

1. 为什么需要SymPy和SciPy解非线性方程组&#xff1f; 遇到工程计算或科研问题时&#xff0c;我们常需要解像这样的方程组&#xff1a;xy10且yz34。这种包含平方项、三角函数或指数函数的方程&#xff0c;传统手工计算不仅耗时还容易出错。我去年做机器人运动学分析时&#xf…...

当你的STM32F0没有VTOR:用SRAM重映射实现IAP升级的完整指南(附代码)

当你的STM32F0没有VTOR&#xff1a;用SRAM重映射实现IAP升级的完整指南&#xff08;附代码&#xff09; 在嵌入式开发中&#xff0c;IAP&#xff08;In-Application Programming&#xff09;功能对于远程固件更新至关重要。然而&#xff0c;当使用Cortex-M0内核的STM32F0系列芯…...

如何突破B站视频获取限制?这款开源工具让你轻松搞定

如何突破B站视频获取限制&#xff1f;这款开源工具让你轻松搞定 【免费下载链接】bilibili-parse bilibili Video API 项目地址: https://gitcode.com/gh_mirrors/bi/bilibili-parse 你是否遇到过想要保存B站精彩视频却无从下手的困境&#xff1f;是否因复杂的技术门槛而…...

如何用开源工具实现3D打印钥匙自由?从参数测量到模型生成的实践路径

如何用开源工具实现3D打印钥匙自由&#xff1f;从参数测量到模型生成的实践路径 【免费下载链接】keygen OpenSCAD tools for generating physical keys 项目地址: https://gitcode.com/gh_mirrors/ke/keygen 在数字化制造蓬勃发展的今天&#xff0c;3D打印技术正逐步走…...

革新性英雄联盟智能辅助解决方案:一站式游戏体验提升工具

革新性英雄联盟智能辅助解决方案&#xff1a;一站式游戏体验提升工具 【免费下载链接】League-Toolkit 兴趣使然的、简单易用的英雄联盟工具集。支持战绩查询、自动秒选等功能。基于 LCU API。 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 在快节奏的英…...