最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于SpringBoot+JWT 實(shí)現(xiàn)Token登錄認(rèn)證與登錄人信息查詢功能

 更新時間:2026年03月03日 10:52:52   作者:柒.梧.  
本文給大家介紹基于SpringBoot+JWT實(shí)現(xiàn)Token登錄認(rèn)證與登錄人信息查詢功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值

在前后端分離項(xiàng)目中,傳統(tǒng)的Session登錄認(rèn)證已無法滿足需求——Session依賴服務(wù)器內(nèi)存存儲,分布式部署時會出現(xiàn)認(rèn)證失效問題,且存在跨域、安全性不足等弊端。而JWT(JSON Web Token)作為一種無狀態(tài)、輕量級的認(rèn)證方式,無需在服務(wù)器存儲會話信息,僅通過客戶端攜帶Token即可完成認(rèn)證,完美解決上述問題。

本文將基于SpringBoot框架,結(jié)合JJWT工具包,完整實(shí)現(xiàn)“Token生成→登錄認(rèn)證→Token解析→登錄人信息查詢”全流程,全程結(jié)合可直接復(fù)用的代碼,拆解每一步核心邏輯,從依賴配置到接口實(shí)現(xiàn),再到避坑指南,覆蓋實(shí)戰(zhàn)開發(fā)所有關(guān)鍵要點(diǎn),新手也能快速上手落地。

核心技術(shù)棧:SpringBoot(后端框架)+ JJWT(JWT工具包,簡化Token生成與解析)+ SpringMVC(接口開發(fā)),無需復(fù)雜配置,依賴引入后即可快速開發(fā),代碼可直接集成到管理系統(tǒng)、APP后端等各類前后端分離項(xiàng)目中。

一、核心原理:JWT為什么能實(shí)現(xiàn)無狀態(tài)認(rèn)證?

在講解代碼實(shí)現(xiàn)前,先簡單理解JWT的核心邏輯,避免只懂代碼、不懂原理:

  • JWT結(jié)構(gòu):由三部分組成(Header+Payload+Signature),通過Base64編碼和簽名拼接而成,整體為一串字符串,可直接在HTTP請求頭中攜帶。
    • Header(頭部):指定簽名算法(如HS256)和Token類型,Base64編碼后不可加密(僅編碼,非加密)。
    • Payload(載荷):存儲核心業(yè)務(wù)信息(如用戶ID、用戶名),可設(shè)置過期時間,同樣是Base64編碼(注意:Payload不加密,不可存儲敏感信息,如密碼)。
    • Signature(簽名):用自定義密鑰對Header和Payload進(jìn)行簽名,確保Token不被篡改——服務(wù)器接收Token后,會用相同的密鑰驗(yàn)證簽名,若簽名不一致則Token無效。
  • 認(rèn)證流程
    • 1. 客戶端提交用戶名/密碼,服務(wù)器驗(yàn)證通過后,生成JWT Token并返回給客戶端。
    • 2. 客戶端接收Token后,存儲在本地(如localStorage、Cookie),后續(xù)所有請求都在請求頭中攜帶Token。
    • 3. 服務(wù)器攔截所有需要認(rèn)證的請求,解析請求頭中的Token,驗(yàn)證Token有效性(簽名是否正確、是否過期)。
    • 4. Token驗(yàn)證通過后,解析出Payload中的用戶標(biāo)識(如用戶ID),根據(jù)標(biāo)識查詢登錄人信息,返回給客戶端。
  • 核心優(yōu)勢:無狀態(tài)(服務(wù)器無需存儲會話信息,減輕服務(wù)器壓力)、支持跨域、可分布式部署、輕量級(Token字符串體積小,傳輸效率高)。

二、前期準(zhǔn)備:依賴配置與核心參數(shù)配置

實(shí)現(xiàn)JWT認(rèn)證,需先引入JJWT依賴(負(fù)責(zé)Token的生成、解析和驗(yàn)證),再配置JWT核心參數(shù)(密鑰、過期時間),這是實(shí)現(xiàn)后續(xù)功能的基礎(chǔ)。

2.1 引入JJWT依賴(pom.xml)

本文使用JJWT 0.11.5版本(穩(wěn)定版本,兼容SpringBoot 2.x/3.x),需引入3個依賴(api、impl、jackson,分別負(fù)責(zé)核心API、運(yùn)行時實(shí)現(xiàn)、JSON序列化):

<!-- JWT核心依賴:提供Token生成、解析的API -->
<dependency>
    <groupId>io.jsonwebtoken</groupId>
    <artifactId>jjwt-api</artifactId>
    <version>0.11.5</version>
</dependency>
<!-- JWT運(yùn)行時依賴:實(shí)現(xiàn)核心API的底層邏輯 -->
<dependency>
    <groupId>io.jsonwebtoken</groupId>
    <artifactId>jjwt-impl</artifactId>
    <version>0.11.5</version>
    <scope>runtime</scope> <!-- 僅運(yùn)行時生效,編譯時不依賴 -->
</dependency>
<!-- JWT JSON序列化依賴:用于Payload中JSON數(shù)據(jù)的序列化/反序列化 -->
<dependency>
    <groupId>io.jsonwebtoken</groupId>
    <artifactId>jjwt-jackson</artifactId>
    <version>0.11.5</version>
    <scope>runtime</scope>
</dependency>

2.2 配置JWT核心參數(shù)(application.yml)

將JWT的密鑰(secret)和Token過期時間(expiration)配置在配置文件yaml中,避免硬編碼,便于后續(xù)修改和部署,參數(shù)說明如下:

  • secret:密鑰,必須至少32位(JJWT的HS256算法要求密鑰長度不低于256位,即32個字符),可自定義(如字母+數(shù)字組合),核心作用是簽名Token,必須保密,不可泄露。
  • expiration:Token過期時間,單位為秒(本文配置7200秒,即2小時,可根據(jù)業(yè)務(wù)需求調(diào)整,如后臺管理系統(tǒng)可設(shè)置1小時,APP可設(shè)置7天)。
jwt:
  secret: "zxcvbnmlkjhgfdsaqwertyuiop123456" # 自定義密鑰,長度≥32位,建議生產(chǎn)環(huán)境使用更復(fù)雜的密鑰
  expiration: 7200 # Token過期時間(秒),7200秒=2小時

三、核心功能實(shí)現(xiàn)(結(jié)合代碼,逐模塊拆解)

本文實(shí)現(xiàn)3個核心功能,串聯(lián)起Token登錄與信息查詢的全流程:1. JWT工具類(Token生成、解析、驗(yàn)證);2. 登錄接口(驗(yàn)證用戶身份,生成Token并返回);3. 登錄人信息查詢接口(解析Token,獲取用戶標(biāo)識,查詢并返回用戶信息)。

模塊1:JWT工具類(JwtUtil)—— 核心工具

封裝JWT的核心操作:生成Token、解析Token獲取用戶標(biāo)識、驗(yàn)證Token有效性,該類交給Spring管理(@Component),通過@Value注入配置文件中的參數(shù),可在其他類中直接注入使用。

package com.qcby.aischool.util;
import io.jsonwebtoken.JwtException;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import io.jsonwebtoken.security.Keys;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.security.Key;
import java.util.Date;
@Component // 交給Spring管理,支持依賴注入
public class JwtUtil {
    // 從配置文件注入Token過期時間(秒)
    @Value("${jwt.expiration}")
    private long expiration;
    // 從配置文件注入JWT密鑰
    @Value("${jwt.secret}")
    private String secret;
    /**
     * 生成Token(核心方法)
     * @param id 存儲在Token中的用戶標(biāo)識(如用戶ID、用戶名,本文用用戶ID)
     * @return 生成的JWT Token字符串
     */
    public String generateToken(String id) {
        // 1. 根據(jù)密鑰生成加密Key(HS256算法要求Key為HmacSHA256類型)
        Key key = Keys.hmacShaKeyFor(secret.getBytes());
        // 2. 構(gòu)建Token并返回
        return Jwts.builder()
                .setSubject(id) // 設(shè)置Payload:存儲用戶標(biāo)識(核心信息)
                .setIssuedAt(new Date()) // 設(shè)置簽發(fā)時間(當(dāng)前時間)
                // 設(shè)置過期時間:當(dāng)前時間 + 過期時間(秒轉(zhuǎn)毫秒)
                .setExpiration(new Date(System.currentTimeMillis() + expiration * 1000))
                .signWith(key, SignatureAlgorithm.HS256) // 設(shè)置簽名算法和密鑰
                .compact(); // 生成最終的Token字符串
    }
    /**
     * 解析Token,獲取存儲在Payload中的用戶標(biāo)識(如用戶ID)
     * @param token 客戶端傳遞的Token字符串
     * @return 用戶標(biāo)識(本文返回用戶ID)
     */
    public String getUsernameFromToken(String token) {
        // 1. 生成加密Key(與生成Token時的密鑰一致)
        Key key = Keys.hmacShaKeyFor(secret.getBytes());
        // 2. 解析Token,獲取Payload中的subject(即用戶標(biāo)識)
        return Jwts.parserBuilder()
                .setSigningKey(key) // 設(shè)置驗(yàn)證簽名的密鑰
                .build() // 構(gòu)建解析器
                .parseClaimsJws(token) // 解析Token(若Token無效,會拋出JwtException)
                .getBody() // 獲取Payload部分
                .getSubject(); // 獲取subject(用戶標(biāo)識)
    }
    /**
     * 驗(yàn)證Token是否有效(核心方法)
     * @param token 客戶端傳遞的Token字符串
     * @return true:Token有效;false:Token無效(簽名錯誤、已過期、格式錯誤等)
     */
    public boolean validateToken(String token) {
        try {
            // 1. 生成加密Key
            Key key = Keys.hmacShaKeyFor(secret.getBytes());
            // 2. 解析Token,若解析成功且未過期,則Token有效
            Jwts.parserBuilder()
                    .setSigningKey(key)
                    .build()
                    .parseClaimsJws(token);
            return true;
        } catch (JwtException | IllegalArgumentException e) {
            // 捕獲異常:JwtException(Token簽名錯誤、已過期等)、IllegalArgumentException(Token格式錯誤)
            return false;
        }
    }
}

關(guān)鍵細(xì)節(jié)與避坑點(diǎn)

  • 密鑰生成:必須使用Keys.hmacShaKeyFor(secret.getBytes())生成Key,不可手動構(gòu)建,否則會導(dǎo)致簽名驗(yàn)證失敗。
  • Payload存儲:僅存儲非敏感信息(如用戶ID、用戶名),絕對不能存儲密碼、手機(jī)號等敏感數(shù)據(jù)(因?yàn)镻ayload是Base64編碼,可直接解碼查看)。
  • 異常捕獲:validateToken方法中捕獲JwtException(Token相關(guān)異常)和IllegalArgumentException(參數(shù)異常),避免因Token無效導(dǎo)致程序崩潰。
  • 方法命名:getUsernameFromToken方法名可根據(jù)實(shí)際存儲的信息修改(如getUserIdFromToken),本文因代碼中存儲的是用戶ID,實(shí)際功能是獲取用戶ID。

模塊2:登錄接口(login)—— Token生成入口

登錄接口是Token生成的入口,核心邏輯:接收客戶端提交的用戶名/密碼,驗(yàn)證用戶身份(查詢數(shù)據(jù)庫,判斷用戶名密碼是否正確),驗(yàn)證通過后,調(diào)用JwtUtil生成Token,將Token返回給客戶端,客戶端后續(xù)請求攜帶該Token即可完成認(rèn)證。

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@RestController // 標(biāo)記為控制器,處理HTTP請求
public class LoginController {
    // 注入管理員服務(wù)(用于查詢數(shù)據(jù)庫,驗(yàn)證用戶身份,替換為自己項(xiàng)目中的Service)
    @Autowired
    private AdministratorService administratorService;
    // 注入JWT工具類(用于生成Token)
    @Autowired
    private JwtUtil jwtUtil;
    /**
     * 登錄接口(客戶端提交用戶名/密碼,獲取Token)
     * @param user 客戶端傳遞的登錄信息(包含用戶名、密碼,封裝為Administrator實(shí)體類)
     * @return 響應(yīng)結(jié)果(成功返回Token,失敗返回錯誤信息)
     */
    @PostMapping("/login")
    @ResponseBody
    public Result login(@RequestBody Administrator user){
        // 1. 驗(yàn)證用戶身份:查詢數(shù)據(jù)庫,判斷用戶名/密碼是否正確(實(shí)際項(xiàng)目中需加密密碼后比對)
        List<Administrator> users = administratorService.login(user);
        // 2. 驗(yàn)證通過(查詢到唯一用戶),生成Token
        if (users.size() == 1){
            // 獲取登錄用戶的ID,作為Token的Payload(用戶標(biāo)識)
            String userId = users.get(0).getId().toString();
            // 調(diào)用JwtUtil生成Token
            String token = jwtUtil.generateToken(userId);
            // 構(gòu)建響應(yīng)數(shù)據(jù),將Token返回給客戶端
            Map<String,String> data = new HashMap<>();
            data.put("token", token);
            // 返回成功響應(yīng)(Result為自定義響應(yīng)實(shí)體,包含code、msg、data)
            return new Result().success(data);
        }else {
            // 驗(yàn)證失?。ㄎ床樵兊接脩艋虿樵兊蕉鄠€用戶),返回錯誤信息
            return new Result().error("用戶名或密碼錯誤");
        }
    }
}

核心注意點(diǎn)與優(yōu)化建議

  • 密碼驗(yàn)證:實(shí)際項(xiàng)目中,數(shù)據(jù)庫存儲的密碼必須加密(如使用BCrypt加密),客戶端傳遞的密碼需先加密,再與數(shù)據(jù)庫中的加密密碼比對,避免明文密碼傳輸和存儲(本文代碼為簡化演示,未做加密處理,實(shí)際需補(bǔ)充)。
  • 用戶校驗(yàn):users.size() == 1 是簡化校驗(yàn),實(shí)際項(xiàng)目中可優(yōu)化為“查詢到唯一用戶且密碼匹配”,避免因數(shù)據(jù)庫數(shù)據(jù)異常(如重復(fù)用戶)導(dǎo)致的問題。
  • 響應(yīng)格式:使用自定義Result實(shí)體類統(tǒng)一響應(yīng)格式(包含狀態(tài)碼、提示信息、數(shù)據(jù)),便于前端統(tǒng)一解析(如成功返回code=200,失敗返回code=500)。

模塊3:登錄人信息查詢接口(info)—— Token解析與信息查詢

客戶端登錄成功并獲取Token后,后續(xù)請求(如查詢個人信息)需攜帶Token,服務(wù)器通過解析Token獲取用戶標(biāo)識,再根據(jù)標(biāo)識查詢用戶信息并返回。本文中,Token解析邏輯由攔截器完成(代碼中未展示攔截器,后續(xù)補(bǔ)充),攔截器解析Token后,將用戶ID存入request屬性中,接口直接從request中獲取用戶ID即可。

    /**
     * 登錄人信息查詢接口(需攜帶Token訪問)
     * 前端請求路徑:/api/user/info(可根據(jù)實(shí)際需求修改)
     * @param request 請求對象,用于獲取攔截器解析后的用戶ID
     * @return 登錄人的完整信息(如管理員信息)
     */
    @GetMapping("/info")
    @ResponseBody
    public Result getLoginAdministratorInfo(HttpServletRequest request) {
        System.out.println("進(jìn)入查詢登錄人信息的接口");
        // 1. 從request中獲取攔截器解析的用戶ID(攔截器已驗(yàn)證Token有效性)
        String id = (String) request.getAttribute("id");
        // 2. 根據(jù)用戶ID查詢數(shù)據(jù)庫,獲取登錄人完整信息
        Administrator administrator = administratorService.findAdministratorById(Integer.valueOf(id));
        // 3. 返回登錄人信息
        return Result.success(administrator);
    }

關(guān)鍵補(bǔ)充:Token攔截器(必加,代碼補(bǔ)充)

上述接口能直接從request中獲取用戶ID,核心是Token攔截器——攔截所有需要認(rèn)證的請求,驗(yàn)證Token有效性,解析Token中的用戶ID,存入request屬性中。補(bǔ)充攔截器代碼(可直接復(fù)用):

@Component
public class JwtInterceptor implements HandlerInterceptor {
    @Autowired
    private JwtUtil jwtUtil;
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        // 1. 從Header中獲取Token(前端需將Token放在Authorization中)
        String token = request.getHeader("Authorization");
        if (token != null && token.startsWith("Bearer ")) {
            token = token.substring(7); // 去掉"Bearer "前綴
        }
        // 2. 驗(yàn)證Token
        if (token == null || !jwtUtil.validateToken(token)) {
            response.setStatus(401); // 未授權(quán)
            response.setContentType("application/json;charset=UTF-8");
            response.getWriter().write("{\"code\":401,\"message\":\"Token無效或已過期\"}");
            return false;
        }
        // 3. Token有效,將用戶ID存入request屬性中
        String userId = jwtUtil.getUsernameFromToken(token);
        request.setAttribute("id", userId);
        // 4. 繼續(xù)處理請求
        return true;
    }
}

攔截器配置(需注冊到Spring,讓攔截器生效):

@Configuration
public class WebConfig implements WebMvcConfigurer {
    @Autowired
    private JwtInterceptor jwtInterceptor;
    // 加自定義攔截器JwtInterceptor,設(shè)置攔截規(guī)則
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(jwtInterceptor)
                .addPathPatterns("/**")
                .excludePathPatterns("/administrator/login");  
    }
}

攔截器核心邏輯說明

  • Token獲?。呵岸诵鑼oken放在請求頭的Authorization字段中,格式為“Bearer 生成的Token”(如Bearer eyJhbGciOiJIUzI1NiJ9...),攔截器截取前綴后獲取真實(shí)Token。
  • 攔截范圍:攔截所有請求(/**),排除登錄接口(/login)——登錄接口是獲取Token的入口,無需認(rèn)證即可訪問。
  • 權(quán)限控制:Token無效或未攜帶時,返回401未授權(quán),阻止訪問接口;Token有效則放行,并將用戶ID存入request,供接口查詢使用。

四、完整流程串聯(lián)與測試步驟

4.1 全流程串聯(lián)(清晰理解Token的作用)

  • 客戶端提交用戶名/密碼,發(fā)送POST請求到/login接口。
  • 服務(wù)器驗(yàn)證用戶名/密碼正確,調(diào)用JwtUtil.generateToken()生成Token(Payload中存儲用戶ID),返回Token給客戶端。
  • 客戶端存儲Token(如localStorage),后續(xù)訪問/info接口時,在請求頭中攜帶Token(Authorization: Bearer Token)。
  • 服務(wù)器攔截器攔截/info請求,獲取請求頭中的Token,調(diào)用JwtUtil.validateToken()驗(yàn)證Token有效性。
  • Token有效,調(diào)用JwtUtil.getUsernameFromToken()解析出用戶ID,存入request屬性中。
  • /info接口從request中獲取用戶ID,查詢數(shù)據(jù)庫得到登錄人信息,返回給客戶端。

4.2 測試步驟(快速驗(yàn)證功能,可直接操作)

  • 環(huán)境準(zhǔn)備:啟動SpringBoot項(xiàng)目,確保數(shù)據(jù)庫連接正常(AdministratorService能正常查詢用戶),攔截器已注冊生效。
  • 登錄測試:使用Postman發(fā)送POST請求(http://localhost:8080/login),請求體為JSON格式({"username":"admin","password":"123456"}),成功返回Token。
  • 信息查詢測試:發(fā)送GET請求(http://localhost:8080/info),在請求頭中添加Authorization字段,值為“Bearer 上一步返回的Token”,成功返回登錄人的管理員信息。
  • 無效Token測試:修改Token中的任意字符,再次發(fā)送/info請求,服務(wù)器返回401未授權(quán),驗(yàn)證攔截器生效。

五、落地優(yōu)化與避坑指南(實(shí)戰(zhàn)必備)

上述代碼可直接復(fù)用,但在實(shí)際生產(chǎn)環(huán)境中,需注意以下優(yōu)化點(diǎn)和坑點(diǎn),避免線上問題,提升系統(tǒng)安全性和穩(wěn)定性。

5.1 核心優(yōu)化點(diǎn)

  • 密碼加密:數(shù)據(jù)庫存儲的密碼必須使用BCrypt等不可逆加密算法加密,客戶端傳遞的密碼需先加密再與數(shù)據(jù)庫比對,避免明文傳輸和存儲。
  • 密鑰安全:生產(chǎn)環(huán)境中,JWT密鑰(secret)不能硬編碼在配置文件中,建議通過環(huán)境變量、配置中心(如Nacos)注入,避免密鑰泄露。
  • Token過期處理:前端需監(jiān)聽Token過期時間,在Token過期前自動刷新Token(如調(diào)用刷新Token接口),避免用戶頻繁登錄;服務(wù)器可設(shè)置Token刷新機(jī)制(如 refreshToken)。
  • 日志優(yōu)化:在攔截器、JwtUtil、接口中添加日志(如SLF4J+Logback),記錄Token生成、驗(yàn)證、解析的關(guān)鍵信息,便于問題排查(如Token無效原因、登錄失敗原因)。
  • 接口權(quán)限細(xì)化:攔截器可根據(jù)用戶角色(如管理員、普通用戶)進(jìn)行權(quán)限控制,不同角色可訪問的接口不同,而非僅驗(yàn)證Token有效性。

5.2 常見坑點(diǎn)與解決方案

  • 坑點(diǎn)1:Token驗(yàn)證失敗,提示簽名錯誤——解決方案:檢查生成Token和驗(yàn)證Token時使用的密鑰是否一致,確保secret長度≥32位,避免密鑰拼寫錯誤。
  • 坑點(diǎn)2:Token解析時拋出JwtException(過期)——解決方案:檢查Token過期時間配置,前端及時刷新Token,服務(wù)器返回401后,前端引導(dǎo)用戶重新登錄。
  • 坑點(diǎn)3:攔截器未生效,無需Token即可訪問接口——解決方案:檢查攔截器是否添加@Component注解(交給Spring管理),是否在WebMvcConfig中注冊,攔截路徑和排除路徑是否配置正確。
  • 坑點(diǎn)4:前端攜帶Token后,服務(wù)器仍返回401——解決方案:檢查請求頭中Token的格式是否正確(是否添加Bearer前綴),Token是否被篡改,攔截器中Token截取邏輯是否正確。
  • 坑點(diǎn)5:Payload中存儲敏感信息導(dǎo)致泄露——解決方案:僅存儲非敏感信息(用戶ID、用戶名),密碼、手機(jī)號等敏感信息絕對不能存入Payload。

六、總結(jié)與擴(kuò)展

本文基于SpringBoot+JJWT,完整實(shí)現(xiàn)了Token登錄認(rèn)證與登錄人信息查詢功能,核心優(yōu)勢在于:

1. 無狀態(tài)認(rèn)證:服務(wù)器無需存儲會話信息,減輕服務(wù)器壓力,支持分布式部署,解決傳統(tǒng)Session認(rèn)證的弊端。

2. 代碼簡潔可復(fù)用:JWT工具類、攔截器、接口代碼均可直接復(fù)用,只需替換實(shí)體類和Service,即可快速集成到各類前后端分離項(xiàng)目中。

3. 安全性高:通過密鑰簽名Token,防止Token被篡改;Payload不存儲敏感信息,降低信息泄露風(fēng)險;攔截器統(tǒng)一攔截,確保接口安全。

擴(kuò)展方向:

  • Token刷新機(jī)制:實(shí)現(xiàn)refreshToken接口,用戶登錄后返回accessToken(短期有效)和refreshToken(長期有效),accessToken過期后,用refreshToken刷新獲取新的accessToken。
  • 多端適配:支持PC端、APP端、小程序端統(tǒng)一認(rèn)證,通過Token中的設(shè)備信息,實(shí)現(xiàn)多端登錄管理(如同一賬號最多允許3臺設(shè)備登錄)。
  • 權(quán)限細(xì)化:結(jié)合Spring Security,實(shí)現(xiàn)基于角色的權(quán)限控制(RBAC),不同角色訪問不同接口,提升系統(tǒng)安全性。
  • Token黑名單:實(shí)現(xiàn)Token注銷功能(如用戶退出登錄),將注銷的Token加入黑名單,即使Token未過期,也不允許訪問接口。

如果在實(shí)現(xiàn)過程中遇到問題,可結(jié)合JJWT官方文檔排查,也可留言交流探討,助力快速落地JWT認(rèn)證功能。

到此這篇關(guān)于基于SpringBoot+JWT 實(shí)現(xiàn)Token登錄認(rèn)證與登錄人信息查詢功能的文章就介紹到這了,更多相關(guān)SpringBoot JWT Token登錄認(rèn)證內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • org.slf4j.Logger中info()方法的使用詳解

    org.slf4j.Logger中info()方法的使用詳解

    這篇文章主要介紹了org.slf4j.Logger中info()方法的使用詳解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Java實(shí)現(xiàn)配置加載機(jī)制

    Java實(shí)現(xiàn)配置加載機(jī)制

    這篇文章主要介紹了Java實(shí)現(xiàn)配置加載機(jī)制的相關(guān)資料,需要的朋友可以參考下
    2016-01-01
  • 詳解commons-pool2池化技術(shù)

    詳解commons-pool2池化技術(shù)

    本文主要是分析commons-pool2池化技術(shù)的實(shí)現(xiàn)方案,希望通過本文能讓讀者對commons-pool2的實(shí)現(xiàn)原理一個更全面的了解
    2021-06-06
  • SpringBoot中的@ResponseStatus注解處理異常狀態(tài)碼

    SpringBoot中的@ResponseStatus注解處理異常狀態(tài)碼

    這篇文章主要介紹了SpringBoot中的@ResponseStatus注解處理異常狀態(tài)碼,在?SpringBoot?應(yīng)用程序中,異常處理是一個非常重要的話題。當(dāng)應(yīng)用程序出現(xiàn)異常時,我們需要對異常進(jìn)行處理,以保證應(yīng)用程序的穩(wěn)定性和可靠性,需要的朋友可以參考下
    2023-08-08
  • Spring Boot 配置文件詳解(小結(jié))

    Spring Boot 配置文件詳解(小結(jié))

    Spring Boot提供了兩種常用的配置文件,分別是properties文件和yml文件。本章重點(diǎn)介紹yml的語法和從配置文件中取值。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04
  • 如何用java給文件加密的簡單實(shí)現(xiàn)

    如何用java給文件加密的簡單實(shí)現(xiàn)

    文件加密,簡單來說就是把文件讀取出來,把讀取出來的字節(jié)碼數(shù)組進(jìn)行遍歷,把每一個碼值和一個秘鑰(隨便一個數(shù))進(jìn)行異或運(yùn)算,將運(yùn)算后的結(jié)果全部寫入到文件里,這篇文章主要介紹了如何用java給文件加密的簡單實(shí)現(xiàn),需要的朋友可以參考下
    2023-12-12
  • 深入解析Java的Struts框架中的控制器DispatchAction

    深入解析Java的Struts框架中的控制器DispatchAction

    這篇文章主要介紹了深入解析Java的Struts框架中的控制器DispatchAction,Struts是Java的SSH三大web開發(fā)框架之一,需要的朋友可以參考下
    2015-12-12
  • Spring boot如何集成kaptcha并生成驗(yàn)證碼

    Spring boot如何集成kaptcha并生成驗(yàn)證碼

    這篇文章主要介紹了Spring boot如何集成kaptcha并生成驗(yàn)證碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-07-07
  • 詳解SpringMVC Controller介紹及常用注解

    詳解SpringMVC Controller介紹及常用注解

    本篇文章主要介紹了SpringMVC Controller介紹及常用注解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • SpringBoot+MinIO+KKFileView實(shí)現(xiàn)文件預(yù)覽功能

    SpringBoot+MinIO+KKFileView實(shí)現(xiàn)文件預(yù)覽功能

    本文主要介紹了使用SpringBoot、MinIO和KKFileView實(shí)現(xiàn)文件上傳和在線預(yù)覽功能,通過配置MinIO存儲文件,并使用KKFileView生成預(yù)覽鏈接,感興趣的可以了解一下
    2024-11-11

最新評論

甘德县| 潮安县| 洛浦县| 措勤县| 彭泽县| 合作市| 山丹县| 怀安县| 武隆县| 阳泉市| 临桂县| 富顺县| 惠东县| 华宁县| 共和县| 东丰县| 长垣县| 子洲县| 同江市| 沭阳县| 额尔古纳市| 朝阳县| 尚志市| 虎林市| 兴隆县| 两当县| 墨玉县| 三亚市| 岱山县| 新乐市| 营山县| 舒城县| 行唐县| 株洲市| 石楼县| 成都市| 扎鲁特旗| 桓台县| 濮阳县| 彭水| 洮南市|