SpringBoot6-10(黑馬)

JWT令牌

簡介:

1.JWT全稱:JSON Web Token(https://iwt.io/)

定義了一種簡潔的、自包含的格式,用于通信雙方以json數據格式安全的傳輸信息

2.組成:
>第一部分:Header(頭),記錄令牌類型、簽名算法等。例如:("alg":“HS256",“type":"JWT”)

>第二部分:Payload(有效載荷),攜帶一些自定義信息、默認信息等。例如:{"id":"1","username":"Tom”)

>第三部分:Signature(簽名),防止Token被篡改、確保安全性。將header、payload,并加入指定秘鑰,通過指定簽名算法計算而來。

注:Base64:是一種基于64個可打印字符(A-Z a-z 0-9 +/)來表示二進制數據的編碼方式。

認證登錄

需要使用JwtUtil這個工具類

UserController

//    登錄@PostMapping("/login")public Result<String> login(@Pattern(regexp = "^\\S{5,16}$") String username, @Pattern(regexp = "^\\S{5,16}$")String password) {// 根據用戶名查詢用戶User loginUser = userService.findByUserName(username);//判斷該用戶是否存在if (loginUser == null) {return Result.error("用戶名錯誤");}//判斷密碼是否正確     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);return Result.success(token);}return Result.error("密碼錯誤");}

ArticleController

package com.rzl.controller;
import com.rzl.pojo.Result;
import com.rzl.utils.JwtUtil;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.Map;@RestController
@RequestMapping("/article")
public class ArticleController {@GetMapping("list")public Result<String> list(@RequestHeader(name = "Authorization") String token, HttpServletResponse response) {
//驗證tokentry {Map<String,Object> claims = JwtUtil.parseToken(token);return Result.success("所有的文章數據...");} catch (Exception e) {
//            http響應狀態碼為401response.setStatus(401);return Result.error("未登錄");}}}

使用postman

獲取用戶詳細信息

User

package com.rzl.pojo;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDateTime;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {private Integer id;//主鍵IDprivate String username;//用戶名@JsonIgnore   //讓springmvc把當前對象轉換為json字符串時,忽略password,最終的json字符串中就沒有password這個屬性private String password;//密碼private String nickname;//昵稱private String email;//郵箱private String userPic;//用戶頭像地址private LocalDateTime createTime;//創建時間private LocalDateTime updateTime;//更新時間
}
application.yml中添加如下代碼
#  駝峰命名和下劃線命名的自動轉換
mybatis:configuration:map-underscore-to-camel-case: true

UserController:

@GetMapping("/userInfo")public Result<User> getUserInfo(@RequestHeader(name = "Authorization") String token) {
//        根據用戶名查詢用戶Map<String, Object> map = JwtUtil.parseToken(token);String username = (String) map.get("username");User user = userService.findByUserName(username);return Result.success(user);}
}

使用postman

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

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

相關文章

智能制造場景195個術語的16個分類

說明&#xff1a;《智能制造典型場景參考指引&#xff08;2025年版&#xff09;》日前&#xff0c;由工信部辦公廳正式發布&#xff0c;將成為眾多制造型企業的工作綱領 1. 工廠數字化規劃設計&#xff08;1.1&#xff09;&#xff1a;在電腦上用專業軟件設計工廠布局、規劃生產…

[論文閱讀] 人工智能 + 軟件工程 | 微信閉源代碼庫中的RAG代碼補全:揭秘工業級場景下的檢索增強生成技術

微信閉源代碼庫中的RAG代碼補全&#xff1a;揭秘工業級場景下的檢索增強生成技術 論文標題&#xff1a;A Deep Dive into Retrieval-Augmented Generation for Code Completion: Experience on WeChatarXiv:2507.18515 A Deep Dive into Retrieval-Augmented Generation for Co…

RabbitMQ—仲裁隊列

上篇文章&#xff1a; RabbitMQ集群搭建https://blog.csdn.net/sniper_fandc/article/details/149312481?fromshareblogdetail&sharetypeblogdetail&sharerId149312481&sharereferPC&sharesourcesniper_fandc&sharefromfrom_link 目錄 1 Raft一致性算法…

[2025CVPR-目標檢測方向] CorrBEV:多視圖3D物體檢測

1. ?研究背景與動機? 論文關注自動駕駛中相機僅有的多視圖3D物體檢測&#xff08;camera-only multi-view 3D object detection&#xff09;問題。盡管基于鳥瞰圖&#xff08;BEV&#xff09;的建模近年來取得顯著進展&#xff08;如BEVFormer和SparseBEV等基準模型&#xf…

oracle 數據庫批量變更數據 將a表字段批量更新為b表字段

需求&#xff1a;將excel表中的數據批量更新到 taccoinfo表中vc_broker字段0、備份&#xff1a;create table taccoinfo0724 as select vc_custno ,vc_broker from taccoinfo 1、創建臨時表&#xff1a; create table taccoinfo0724_1 as select vc_custno ,vc_broker from…

vim-xcode 項目常見問題解決方案

vim-xcode 項目常見問題解決方案 項目基礎介紹 vim-xcode 是一個開源項目&#xff0c;旨在通過 Vim 編輯器與 Xcode 項目進行交互。該項目允許開發者在 Vim 中直接構建、測試和運行 Xcode 項目&#xff0c;從而提高開發效率。vim-xcode 主要使用 Vimscript 編寫&#xff0c;并依…

個性化網頁計數器

需要一個服務器環境來存放我們的計數器腳本和數據庫。對于初學者來說&#xff0c;PHP和MySQL是一個不錯的組合&#xff0c;因為它們易于學習且廣泛應用。接下來&#xff0c;我們開始編寫PHP腳本。這個腳本的主要任務是接收來自網頁的請求&#xff0c;并將訪問信息存儲到數據庫中…

詳解力扣高頻SQL50題之1683. 無效的推文【入門】

傳送門&#xff1a;1683. 無效的推文 題目 表&#xff1a;Tweets ----------------------- | Column Name | Type | ----------------------- | tweet_id | int | | content | varchar | ----------------------- 在 SQL 中&#xff0c;tweet_id 是這個表的主鍵。 content 只…

Spring Boot與Python的聯動:實戰案例解析

目錄一、背景與需求二、技術準備2.1 Spring Boot 基礎2.2 Python 環境搭建三、基于 RESTful API 的調用3.1 創建 Python Flask 應用3.2 創建 Spring Boot 應用3.3 測試與驗證四、通過 ProcessBuilder 調用 Python 腳本4.1 創建 Python 腳本4.2 Spring Boot 中調用腳本4.3 注意事…

力扣刷題(第九十七天)

靈感來源 - 保持更新&#xff0c;努力學習- python腳本學習密鑰格式化解題思路移除原字符串中的所有破折號&#xff0c;并將小寫字母轉換為大寫。從后向前遍歷處理后的字符串&#xff0c;每 K 個字符為一組。最后將各組逆序拼接&#xff0c;并用破折號分隔。class Solution:def…

ESP32入門實戰:PC遠程控制LED燈完整指南

引言&#xff1a;物聯網遠程控制基礎 遠程控制是物聯網應用的基礎功能之一&#xff0c;通過ESP32實現PC遠程控制LED燈不僅是一個經典入門項目&#xff0c;更是理解網絡通信、嵌入式開發和物聯網交互的絕佳實踐。本文將詳細介紹如何通過WiFi和UDP協議&#xff0c;從零開始構建一…

主流攝像頭協議及其開源情況,GB/T 28181協議介紹

一、主流攝像頭協議及開源情況 1. RTSP&#xff08;Real Time Streaming Protocol&#xff09; 技術特性&#xff1a;基于TCP/UDP的實時流傳輸協議&#xff0c;支持雙向通信&#xff08;如暫停、播放控制&#xff09;。應用場景&#xff1a;攝像頭實時監控、視頻點播系統。開源…

「iOS」——RunLoop學習

底層學習iOS--RunLoop學習RunLoop的概念RunLoop與線程的關系RunLoop的結構ModeObserverTimerSourceRunLoop 執行流程RunLoop 的應用1.AutoreleasePool是什么時候釋放的2.觸控事件的響應3.刷新界面4.線程保活小知識mach Port**Toll-Free Bridging&#xff08;對象橋接&#xff0…

從零構建 Node20+pnpm+pm2 環境鏡像:基于 Dockerfile 的兩種方案及持久化配置指南

前言&#xff1a;在Node.js項目部署中&#xff0c;環境一致性和服務自動恢復是運維的核心需求。無論是本地開發還是生產部署&#xff0c;使用Docker封裝Node20、pnpm&#xff08;高效包管理&#xff09;和pm2&#xff08;進程守護&#xff09;環境&#xff0c;能避免“本地能跑…

【Python機器學習】4.3. 模型優化

喜歡的話別忘了點贊、收藏加關注哦&#xff08;關注即可查看全文&#xff09;&#xff0c;對接下來的教程有興趣的可以關注專欄。謝謝喵&#xff01;(&#xff65;ω&#xff65;) 4.3.1. 實戰中會遇到的問題 首先看一個例子&#xff1a; 根據任檢測數據x1x_1x1?、x2x_2x2…

Impact rating 影響等級定義(學習筆記)

影響等級可以通過四個方面定義&#xff0c;包含安全性safety&#xff0c;經濟型financial&#xff0c;操作性operational&#xff0c;和私密性privacy 即[S,F,O,P]這四個方面。每個方面又可以定義四個不同的等級&#xff0c;包含severe&#xff08;嚴重的&#xff09;&#xff…

同花順前端潛在面試題目與答案

潛在面試題目與答案 以下是根據您提供的“崗位職責”和“崗位要求”整理出的潛在面試題目和參考答案。請注意&#xff0c;這些答案僅供參考&#xff0c;您需要根據自己的實際經驗和理解進行更詳細和個性化的闡述。 一、基礎技術知識&#xff08;Vue/前端工程化/HTML/CSS/JS&…

J2EE模式---組合實體模式

組合實體模式基礎概念組合實體模式&#xff08;Composite Entity Pattern&#xff09;是一種企業級設計模式&#xff0c;屬于 J2EE 模式的一種&#xff0c;其核心思想是將多個實體對象組合成一個更高層次的對象&#xff08;組合實體&#xff09;&#xff0c;以簡化客戶端與這些…

基于CloudBase+React+CodeBudddy的云上智能睡眠應用開發實踐

本文詳細記錄了如何利用CloudBase云開發平臺、React前端框架和CodeBudddy智能編程技術棧&#xff0c;構建一個云端智能睡眠監測與分析系統。通過完整的項目實踐&#xff0c;探索AIoT時代健康管理應用的開發范式。一、智能睡眠監測&#xff1a;云時代的健康守護者在快節奏的現代…

QML 模型

QML模型基礎架構QML采用經典的Model-View-Delegate (MVD)?架構來分離數據與界面&#xff0c;這與MVC模式類似但更加適合聲明式UI開發。在這個架構中&#xff1a;?Model?&#xff1a;負責管理數據&#xff0c;可以是簡單的整數&#xff0c;也可以是復雜的C自定義模型?View?…