十八、【用戶認證篇】安全第一步:基于 JWT 的前后端分離認證方案

【用戶認證篇】安全第一步:基于 JWT 的前后端分離認證方案

    • 前言
      • 什么是 JWT (JSON Web Token)?
      • 準備工作
      • 第一部分:后端 Django 配置 JWT 認證
        • 1. 安裝 `djangorestframework-simplejwt`
        • 2. 在 `settings.py` 中配置 `djangorestframework-simplejwt`
        • 3. 在項目的 `urls.py` 中添加 JWT 相關的 URL 端點
        • 4. 創建用戶注冊 API
        • 5. 保護你的其他 API 端點
        • 6. 測試后端 JWT API
      • 第二部分:前端 Vue3 集成 JWT 認證
        • 1. 更新 Pinia `userStore` 以處理 JWT Token
        • 2. 更新 `LoginView.vue` 和創建 `RegisterView.vue`
        • 3. 更新 Axios 請求攔截器 (`utils/request.ts`)
        • 4. 更新路由守衛 (`router/index.ts`)
        • 5. 更新 `App.vue` (可選,但通常 `loadTokensFromLocalStorage` 放在這里也很好)
      • 第三部分:全面測試 JWT 認證流程
    • 總結

前言

到目前為止,我們的測試平臺在功能上已經相對完善了,用戶可以管理項目、模塊、用例、計劃,執行測試并查看報告。但是,這一切操作都是在“裸奔”——沒有任何用戶認證和權限控制。任何人都可以訪問和操作所有數據,這在實際生產環境中是絕對不可接受的。

因此,本篇文章將聚焦于為我們的測試平臺構建用戶認證系統。我們將采用目前前后端分離架構中非常流行的 JWT (JSON Web Token) 認證方案。

在前后端分離的應用中,傳統的基于 Session 的認證方式不再適用,因為前端和后端可能部署在不同的域,Session Cookie 的跨域共享會很麻煩。JWT 提供了一種無狀態的、基于 Token 的認證機制,非常適合這種場景。

這篇文章將帶你

  1. 理解 JWT 的基本概念和工作原理。
  2. 在 Django 后端集成 djangorestframework-simplejwt 庫,實現用戶注冊、登錄(獲取 Token)、Token 刷新和驗證的 API。
  3. 在前端 Vue3 應用中,調整登錄流程以調用新的 JWT 認證 API。
  4. 使用 Pinia Store 存儲和管理 JWT Token。
  5. 配置 Axios 請求攔截器?

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

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

相關文章

03 Deep learning神經網絡的編程基礎 代價函數(Cost function)--吳恩達

深度學習中的損失函數(Cost Function)用于量化模型預測與真實數據的差距,是優化神經網絡的核心指標。以下是常見類型及數學表達: 核心原理 邏輯回歸通過sigmoid函數將線性預測結果轉換為概率: y ^ ( i ) \hat{y}^{(i)}

Linux信號捕捉技術深度解析

根據您的需求,文章可以聚焦技術實現與實踐的結合,以下提供幾個標題方案供選擇: 方案一(學術向標題) 《Linux信號捕捉機制全解析:內核態捕獲原理、可重入函數實踐與SIGCHLD異步處理中的volatile陷阱》 方案…

【大模型部署】mac m1本地部署 ChatGLM3-6B 超詳細教程

本人環境:macOS 15.5 (Sonoma) - Apple M1 / 16 G 目標:在 mac m1 16G 上 完全離線 的本地模型目錄上,跑通官方 ChatGLM3-6B 目錄 背景 & 踩坑記錄 準備工作 新建 Conda 環境并安裝依賴 關鍵環境變量 運行 composite_demo 常見報錯與…

Redis命令使用

Redis是以鍵值對進行數據存儲的,添加數據和查找數據最常用的2個指令就是set和get。 set:set指令用來添加數據。把key和value存儲進去。get:get指令用來查找相應的鍵所對應的值。根據key來取value。 首先,我們先進入到redis客戶端…

Linux打開.img鏡像文件

kparkx 可以查看和修改img文件的內容 1.安裝kparkx 1.安裝 kpartx sudo apt-get update sudo apt-get install kpartx2.使用kpartx映射鏡像文件 假設鏡像文件名為 example.img ,以下命令會將其分區映射到 dev/mapper/ sudo kpartx -av example.img? -a表示添加…

6.4 計算機網絡面試題

HTTP到底是不是無狀態的? 無狀態即每個請求都是獨立的,服務器不會在多個請求間保存關于客戶端狀態的信息。 HTTP雖然是無狀態的,但是可以通過一些機制保存狀態,如使用cookies session跟蹤用戶狀態。 攜帶Cookie的HTTP請求是有狀…

基于千帆大模型的AI體檢報告解讀系統實戰:使用OSS與PDFBox實現PDF內容識別

目錄 說明 前言 需求 流程說明 表結構說明 整體流程 百度智能云 注冊和實名認證 創建應用 費用說明 大模型API說明 集成大模型 設計Prompt 上傳體檢報告 讀取PDF內容 功能實現 智能評測 抽取大模型工具 功能實現 總結 說明 AI體檢報告解讀、病例小結或者…

湖北理元理律師事務所:債務優化中的生活保障實踐

在債務壓力與生活質量失衡的普遍困境中,法律服務的價值不僅在于解決債務問題,更在于幫助債務人重建生活秩序。湖北理元理律師事務所通過其債務優化服務,探索出一條“法律生活”的雙軌路徑。 債務規劃的核心矛盾:還款能力與生存需…

無人機智能識別交通目標,AI視覺賦能城市交通治理新高度

在城市化快速發展的當下,如何實現對道路交通的智能化管理、保障出行安全,成為城市治理的重要命題。傳統的交通監控往往依賴地面攝像頭,受限于固定視角與安裝環境。而今,隨著人工智能與無人機技術的深度融合,一種更高效…

unity UI Rect Transform“高”性能寫法

🎯 Unity UI 性能優化終極指南 — RectTransform篇 🧩 RectTransform 是什么? Unity UI中每一個UI元素的必備組件繼承自 Transform,但專門用于 2D 布局負責定義UI的位置、大小、錨點、旋轉、縮放 ?? 特別注意:所有…

JDK21深度解密 Day 8:Spring Boot 3與虛擬線程整合

【JDK21深度解密 Day 8】Spring Boot 3與虛擬線程整合 引言:Spring Boot 3遇上JDK21虛擬線程 在本系列的第8天,我們將聚焦于Spring Boot 3與JDK21虛擬線程的整合實踐。作為全網首套完整的JDK21特性解析,我們不僅會探討虛擬線程如何顛覆傳統Java并發模型,還會通過完整的Sp…

【STM32F407 PWM配置和應用指南 】

PWM基本概念 PWM(脈沖寬度調制)是一種通過快速開關數字信號來控制模擬電路的技術,通過改變脈沖的占空比來控制平均電壓。STM32F407的定時器外設可以生成PWM信號。 STM32F407 PWM配置步驟 1. 定時器時鐘使能 首先需要使能定時器的時鐘&…

鴻蒙【HarmonyOS 5】 (React Native)的實戰教程

一、環境配置 ?安裝鴻蒙專屬模板? bashCopy Code npx react-native0.72.5 init HarmonyApp --template react-native-template-harmony:ml-citation{ref"4,6" data"citationList"} ?配置 ArkTS 模塊路徑? 在 entry/src/main/ets 目錄下創建原生模塊&…

MYSQL MGR高可用

1,MYSQL MGR高可用是什么 簡單來說,MySQL MGR 的核心目標就是:確保數據庫服務在部分節點(服務器)發生故障時,整個數據庫集群依然能夠繼續提供讀寫服務,最大限度地減少停機時間。 2. 核心優勢 v…

(18)混合云架構部署

文章目錄 🚀 混合云架構部署:Java應用的云原生之旅🌩? 混合云架構簡介? Java應用云原生部署五大核心技術1?? 容器化與編排技術2?? 服務網格與API網關3?? CI/CD自動化流水線4?? 多云管理平臺5?? 云原生Java框架與運行時 &#x1f…

虛擬現實教育終端技術方案——基于EFISH-SCB-RK3588的全場景國產化替代

一、VR教育終端技術挑戰與替代價值 ?實時交互性能瓶頸? 賽揚N100/N150僅支持3DOF渲染(延遲>25ms),動態手勢識別幀率≤15FPS,難以滿足6DOF教學場景需求RK3588 Mali-G610 GPU支持6DOF空間渲染(延遲≤12ms&…

pikachu靶場通關筆記14 XSS關卡10-XSS之js輸出(五種方法滲透)

目錄 一、源碼分析 1、進入靶場 2、代碼審計 二、滲透實戰 1、根據提示輸入tmac 2、XSS探測 3、注入Payload1 4、注入Payload2 5、注入Payload3 6、注入Payload4 7、注入Payload5 本系列為通過《pikachu靶場通關筆記》的XSS關卡(共10關)滲透集合&#x…

PARADISE:用于新生兒缺氧缺血性腦病(HIE)疾病識別與分割的個性化和區域適應性方法|文獻速遞-深度學習醫療AI最新文獻

Title 題目 PARADISE: Personalized and regional adaptation for HIE disease identification and segmentation PARADISE:用于新生兒缺氧缺血性腦病(HIE)疾病識別與分割的個性化和區域適應性方法 1 文獻速遞介紹 缺氧缺血性腦病&…

OpenCV C++ 心形雨動畫

?? OpenCV C 心形雨動畫 ?? 本文將引導你使用 C 和 OpenCV 庫創建一個可愛的心形雨動畫。在這個動畫中,心形會從屏幕頂部的隨機位置落下,模擬下雨的效果。使用opencv定制自己的專屬背景 目錄 簡介先決條件核心概念實現步驟 創建項目定義心形結構…

【記錄】Python|Python支持if 1<a<2、if not a、if a is None這三種寫法

今天讓AI幫我寫代碼&#xff0c;突然發現寫出來一句類似1<a<2&#xff0c;我頓感疑惑&#xff1a;不是只能用and連接嗎&#xff1f; 一試發現真行&#xff0c;那我辛辛苦苦寫了好幾年的 (條件1) and (條件2) 算什么&#xff1f;算我勤快嗎&#xff1f;&#x1f62d; 常…