大事件項目記錄13-登錄優化-redis

一、redis優化登錄接口。

? ? ? ? 原有代碼中在修改密碼在產生新令牌后并未將舊的令牌主動失效,舊的令牌依然可以使用 ,會產生安全隱患,所以需要對其進行優化。

1.令牌主動失效機制。

? ? ? ? (1)登錄成功后,給瀏覽器響應令牌的同時,把該令牌存儲到redis中;

? ? ? ? (2)Loginnterceptor攔截器中,需要驗證瀏覽器攜帶的令牌,并同時需要獲取到redis中存儲的與之相同的令牌;

? ? ? ? (3)當用戶修改密碼成功后,刪除redis中存儲的舊令牌。

2.SpringBoot集成redis。

? ? ? ? (1)導入spring-boot-starter-data-redis起步依賴;

? ? ? ? (2)在yml配置文件中,配置redis連接信息;

? ? ? ? (3)調用API(StringRedisTemplate)完成字符串的存取操作。??

3.令牌主動失效。?

? ? ? ? 修改UserController.java中的登錄接口以及修改密碼接口。??

        //判斷密碼是否正確 loginUser對象中的password為密文if(Md5Util.getMD5String(password).equals(loginUser.getPassword())){//登錄成功Map<String,Object> claims = new HashMap<>();claims.put("id",loginUser.getId());claims.put("username",loginUser.getUsername());String token = JwtUtil.genToken(claims);//把token存儲到redis中ValueOperations<String, String> operations = stringRedisTemplate.opsForValue();operations.set(token,token,1, TimeUnit.HOURS);return Result.success(token);}
        //調用Service完成密碼更新userService.updatePwd(newPwd);//刪除redis中對應的TokenValueOperations<String, String> operations = stringRedisTemplate.opsForValue();operations.getOperations().delete(token);return Result.success();

????????修改攔截器LoginInterceptor.java:

    @Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {//令牌驗證String token = request.getHeader("Authorization");try{//從redis中獲取相同的tokenValueOperations<String, String> operations = stringRedisTemplate.opsForValue();String redisToken = operations.get(token);if(redisToken == null){//token已經失效throw new RuntimeException();}Map<String, Object> claims = JwtUtil.parseToken(token);//把業務數據存儲到ThreadLocal中ThreadLocalUtil.set(claims);//放行return true;}catch (Exception e){//http響應狀態碼為401response.setStatus(401);//不放行return false;}}

? ? ? ? 運行測試發現已經修復原有缺陷。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/912501.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/912501.shtml
英文地址,請注明出處:http://en.pswp.cn/news/912501.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

重塑音視頻敘事:Premiere文本剪輯與Podcast AI降噪的革命性工作流

一、 開篇的另一些心里話 最近淘到個好東西&#xff0c;是來自奧地利Blueskyy藝術學院的Adobe教育版授權&#xff0c;深度體驗下來&#xff0c;感覺就像是給我的創意工具箱做了一次“滿配”升級&#xff0c;有些心得不吐不快&#xff0c;必須跟同路的設計師朋友們碰一碰。 在分…

面向隱私保護的機器學習:聯邦學習技術解析與應用

在當今數字化時代&#xff0c;數據隱私和安全問題日益受到關注。隨著《數據安全法》《個人信息保護法》等法律法規的實施&#xff0c;企業和機構在數據處理和分析過程中面臨著越來越嚴格的合規要求。然而&#xff0c;機器學習模型的訓練和優化往往需要大量的數據支持&#xff0…

【軟考高項論文】論信息系統項目的質量管理

摘要 在信息系統項目管理里&#xff0c;質量管理是保障項目成果契合預期、滿足用戶需求與業務目標的關鍵。本文以 2024 年 6 月啟動的一個典型信息系統項目為例&#xff0c;闡述了信息系統項目質量管理的過程&#xff0c;包括質量規劃、質量控制和質量保證三個核心活動及其目的…

基于DSP的邊緣檢測與圖像銳化算法研究與實現

摘要&#xff1a;該文圍繞基于 DSP 的邊緣檢測與圖像銳化算法展開研究與實現。在邊緣檢測方面&#xff0c;實現了 Sobel、Roberts 和 Prewitt 三種算子算法。Sobel 算子通過計算水平和垂直方向的梯度并求和來檢測邊緣&#xff0c;對噪聲有一定抑制能力&#xff1b;Roberts 算子…

概率概率密度

我之前一直很糾結為什么離散型隨機變量分布律中有隨機變量的出現&#xff0c;而連續型隨機變量概率密度中沒有隨機變量的出現。那對于連續型隨機變量而言&#xff0c;如何建立隨機變量和取值之間的聯系。也就是說看到連續型隨機變量的概率密度&#xff0c;我怎么知道描述的是哪…

Android 中 使用 ProgressBar 實現進度顯示

在 Android 中,ProgressBar 是一個用于顯示進度的控件,通常用于表示任務的完成進度或加載狀態。ProgressBar 有多種樣式,包括水平進度條、圓形進度條等。 1、常見屬性 android:id 用于在代碼中引用該ProgressBar。android:layout_width 和 android:layout_height 定義Progr…

Prompt:面向目標的提示詞

歡迎來到啾啾的博客&#x1f431;。 記錄學習點滴。分享工作思考和實用技巧&#xff0c;偶爾也分享一些雜談&#x1f4ac;。 有很多很多不足的地方&#xff0c;歡迎評論交流&#xff0c;感謝您的閱讀和評論&#x1f604;。 目錄 1 引言2 理解”目標驅動“提示詞2.1 從”引導“到…

04_MySQL 通過 Docker 在同一個服務器上搭建主從集群(一主一從)

04_MySQL 通過 Docker 在同一個服務器上搭建主從集群&#xff08;一主一從&#xff09; &#x1f9f0; 準備工作 1. 拉取 MySQL 鏡像 docker pull mysql:8.0.262. 創建主從配置目錄 mkdir -p /root/mysql/master/conf mkdir -p /root/mysql/master/data mkdir -p /root/mysq…

隨筆 | 寫在六月的最后一天,也寫在2025年上半年的最后一天

文章目錄 前言.出差.耐心.回歸.結語. 前言 又要以最經典的句式開場&#xff0c;轉眼間&#xff0c;2025年已經過去了一半。五六月飛逝&#xff0c;但仔細回望&#xff0c;也留下了很多美好的瞬間。 記得之前讀過一句話&#xff0c;人們總是高估一年可以做的事情&#xff0c;也…

Prompt Enginering

1.Prompt Engineering 提示詞工程 Prompt 給人工智能模型輸入文本或指令&#xff0c;這些指令引導模型生成特定的輸出 Prompt Engineering&#xff1a;指在使用生成式人工智能模型&#xff08;比如gpt-4)時&#xff0c;設計優化輸入文本&#xff08;prompt)的過程&#xff0c;以…

CppCon 2018 學習:A Semi Compile/Run-time Map with (Nearly) Zero Overhead Looup

介紹一個 C 和 Java 之間橋接&#xff08;Bridge&#xff09;系統的示例代碼&#xff0c;它說明了如何在 C 中調用 Java 類&#xff08;如 java.io.InputStream&#xff09;的方法。下面是詳細解讀&#xff1a; 一、內容來源說明 《C ? Java Bridge》 目的&#xff1a;演示…

原子級制造革命:雙原子鑭催化劑登頂Angew,焦耳超快加熱技術深度解析

一、突破性成果&#xff1a;雙原子鑭催化劑的三大里程碑 吉林大學的牛效迪教授&#xff0c;王振旅教授、管景奇教授在《Angewandte Chemie》發表創新研究&#xff0c;通過焦耳超快加熱技術成功制備氮配位雙原子鑭催化劑&#xff08;La?-NG&#xff09;&#xff0c;實現三大突…

unix:///var/run/supervisor/supervisor.sock no such file

在 Linux 系統中&#xff0c;如果你遇到 /var/run/supervisor/supervisor.sock 文件不存在的問題&#xff0c;這通常意味著 Supervisor 服務沒有正確運行或者其配置文件沒有正確設置來創建這個 socket 文件。下面是一些解決這個問題的步驟&#xff1a; 檢查 Supervisor 是否正…

Python 編輯器:Geany,不是內部或外部命令,系統找不到指定路徑

目錄 1 找到設置選項2 開始設置2.1 complie2.2 execute 3 歡迎糾錯4 免費爬蟲------以下關于 Markdown 編輯器新的改變功能快捷鍵合理的創建標題&#xff0c;有助于目錄的生成如何改變文本的樣式插入鏈接與圖片如何插入一段漂亮的代碼片生成一個適合你的列表創建一個表格設定內…

Docker安裝Mysql、配置文件掛載、修改Mysql編碼

1.下載mysql鏡像 docker pull mysql:5.72.查看鏡像 docker images3.啟動mysql鏡像 # 1.設置端口映射3306:3306、 # 2.設置文件掛載 # 3.設置mysql密碼為“root” sudo docker run -p 3306:3306 --name mysql \ -v /mydata/mysql/mysql-files:/var/lib/mysql-files \ -v /mydata…

vueflow截圖功能,線會有黑色背景

vueflow截圖功能&#xff0c;線會有黑色背景&#xff0c;解決辦法,畫線時style里設置fill:‘none’ // 線的默認顏色 const edgesStyle {style: {fill:none,stroke: #6366f1,strokeWidth: 1, // 設置線寬 },markerEnd: {type: MarkerType.ArrowClosed,// color: #6366f1,// w…

16014.rtsp推流服務器

1 ubuntu20.04搭建rtsp服務器,easyplayer進行拉流 在images/stream1 文件下存儲了5張圖片,作為咱們得原料,運行rtsp服務器,即可。#include <iostream> #include <vector> #include <chrono>

常用測試腳本

Linux 系統 測試網絡帶寬及網卡吞吐量 shell 腳本 #!/bin/bash # 定義測試時間 time10 # 定義網卡名稱 niceth0 # 測試網卡的帶寬 echo 網卡帶寬&#xff1a;time dd if/dev/zero bs1M count1024 | nc -w $time localhost 9000 > /dev/null # 測試網卡的吞吐量 echo 網卡吞…

華為云 Flexus+DeepSeek 征文|華為云 Flexus 云服務 Dify-LLM 平臺深度部署指南:從基礎搭建到高可用實踐

華為云 FlexusDeepSeek 征文&#xff5c;華為云 Flexus 云服務 Dify-LLM 平臺深度部署指南&#xff1a;從基礎搭建到高可用實踐 引言&#xff1a;正文&#xff1a;一、前期準備1.1 賬號注冊與充值1.2 控制臺操作熟悉 二、一鍵部署 Dify-LLM 平臺2.1 云服務器單機部署2.1.1 訪問…

Kafka 核心機制面試題--自問自答

基礎篇 Q1: Kafka為什么能這么快&#xff1f; A: Kafka的高性能主要來自三大核心技術&#xff1a; 零拷貝(Zero-Copy)&#xff1a;通過sendfile()系統調用&#xff0c;數據直接從磁盤到網卡&#xff0c;避免了內核態和用戶態之間的多次拷貝頁緩存(Page Cache)&#xff1a;消…