欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Springboot中JWT登錄校驗及其攔截器實現(xiàn)方法

 更新時間:2025年11月17日 11:04:19   作者:程序陸  
這篇文章主要介紹了Springboot中JWT登錄校驗及其攔截器實現(xiàn)方法的相關資料,包括引入Maven坐標、獲取Token、JWT攔截器的實現(xiàn)和配置,通過這些步驟可以實現(xiàn)后端對用戶登錄的身份校驗,需要的朋友可以參考下

前言

這篇我們主要實現(xiàn)后端對用戶登錄的身份校驗,是web項目核心功能之一。

后續(xù)會有springboot整合各個功能的文章,同時也會有前端的相關知識,希望能給web開發(fā)學習者提供幫助~

一、JWT是什么?

JWT(JSON Web Token)是一種基于 JSON 的輕量級開放標準(RFC 7519),用于在網(wǎng)絡應用間安全地傳遞聲明信息。它通過數(shù)字簽名確保信息的完整性和真實性,常被用于身份驗證和數(shù)據(jù)交換場景。

二、實現(xiàn)步驟

1.引入Maven坐標

在pom.xml中引入Maven坐標:

        <dependency>
            <groupId>com.auth0</groupId>
            <artifactId>java-jwt</artifactId>
            <version>3.10.3</version>
        </dependency>

2.獲取Token

封裝一個靜態(tài)函數(shù)用來生成token。在service層用戶登錄信息匹配成功后,可以調用該函數(shù),來獲取Token,同時把Token密鑰返回給前端。

    public static String getToken(String userId, String password){

        long EXPIRE_TIME = 60 * 60 * 1000;  //過期時間 60 分鐘
        Date date = new Date(System.currentTimeMillis() + EXPIRE_TIME);
        String token = JWT.create().withAudience(userId) // 將 userId 保存到 token 里面
                .withExpiresAt(date) //60分鐘后token過期
                .sign(Algorithm.HMAC256(password));  //使用用戶id和password進行token生成
        return token;  //返回加密后的token密鑰

    }

3.JWT攔截器的實現(xiàn)

public class JwtInterceptor implements HandlerInterceptor {
    @Autowired
    private UserService userService;

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {

        //通過預檢請求
       if(request.getMethod().equals("OPTION")){
           return true;
       }
       //從請求頭中獲取Token,xxx為前端請求頭中value為Token密鑰的key
       String token = request.getHeader("xxx");
        // 如果不是映射到方法直接通過
        if(!(handler instanceof HandlerMethod)){
            return true;
        }
        //ServiceException是自定義的異常
        if(token == null){
            throw new ServiceException(Constants.CODE_401,"請登錄");
        }

        String userId;
        try {
            //對Token密鑰進行解密,獲取用戶id
            userId = JWT.decode(token).getAudience().get(0);
        } catch (JWTDecodeException j) {
            //Token密鑰有誤,無法解密
            throw new ServiceException(Constants.CODE_401,"請登錄");
        }

        //通過解密后獲取的用戶id進行數(shù)據(jù)庫查詢,判斷是否有該id的用戶
        User user = userService.getUser(userId);
        if (user == null) {
            //沒有該用戶
            throw new ServiceException(Constants.CODE_401,"請登錄");
        }
        //獲取從數(shù)據(jù)庫查詢出來的用戶密碼,對前端帶過來的Token密鑰進行進一步驗證
        JWTVerifier jwtVerifier = JWT.require(Algorithm.HMAC256(user.getPassword())).build();
        try {
            jwtVerifier.verify(token);
        } catch (JWTVerificationException e) {
            //Token密鑰有誤
            throw new ServiceException(Constants.CODE_401,"請登錄");
        }


        return true;
    }
}

4.JWT攔截器配置

@Configuration
public class InterceptorConfig implements WebMvcConfigurer {
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        //"/user/login","/xxx","/yyy/**" 為JWT攔截器不攔截,直接放行的接口
        registry.addInterceptor(jwtInterceptor())
        .addPathPatterns("/**").excludePathPatterns("/user/login","/xxx","/yyy/**");
    }

    @Bean
    public JwtInterceptor jwtInterceptor(){
        return new JwtInterceptor();
    }
}

總結

以上實現(xiàn)了后端對用戶登錄的身份校驗,希望對未來的高級工程師們起到幫助,謝謝啦~

到此這篇關于Springboot中JWT登錄校驗及其攔截器實現(xiàn)的文章就介紹到這了,更多相關Springboot JWT登錄校驗及攔截器內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 利用Jasypt如何對Spring Boot配置文件加密

    利用Jasypt如何對Spring Boot配置文件加密

    這篇文章主要給大家介紹了關于利用Jasypt如何對Spring Boot配置文件加密的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-07-07
  • 深入解析Java中的Class Loader類加載器

    深入解析Java中的Class Loader類加載器

    這篇文章主要介紹了Java中的類加載器,是Java入門學習中的基礎知識,需要的朋友可以參考下
    2016-03-03
  • JavaWeb文件上傳流程

    JavaWeb文件上傳流程

    這篇文章主要介紹了JavaWeb文件上傳流程,JavaWeb中最重要的技術之一,下文關于其文件上傳的流程分享,需要的小伙伴可以參考一下
    2022-05-05
  • MybatisPlus中@TableLogic注解的使用實現(xiàn)

    MybatisPlus中@TableLogic注解的使用實現(xiàn)

    @TableLogic注解是MyBatis-Plus框架中用于處理邏輯刪除的注解,邏輯刪除是一種常見的刪除策略,其中并不真正刪除數(shù)據(jù)記錄,而是通過修改某個標記字段的值來表示記錄已經被刪除,方便以后恢復或者審計,感興趣的可以了解一下
    2025-10-10
  • Spring?Boot?Swagger3常用注解詳解與實戰(zhàn)指南

    Spring?Boot?Swagger3常用注解詳解與實戰(zhàn)指南

    Swagger是一個用于設計、構建、文檔化和使用RESTful?Web服務的開源工具,Swagger3是Swagger的最新版本,它提供了許多新功能和改進,這篇文章主要介紹了Spring?Boot?Swagger3常用注解詳解與實戰(zhàn)指南的相關資料,需要的朋友可以參考下
    2025-10-10
  • Spring的@Transactional注解使用詳細解析

    Spring的@Transactional注解使用詳細解析

    這篇文章主要介紹了Spring的@Transactional注解使用詳細解析,@Transactional 注解相信大家并不陌生,平時開發(fā)中很常用的一個注解,它能保證方法內多個數(shù)據(jù)庫操作要么同時成功、要么同時失敗,需要的朋友可以參考下
    2023-11-11
  • Java中使用異或語句實現(xiàn)兩個變量的互換

    Java中使用異或語句實現(xiàn)兩個變量的互換

    這篇文章主要介紹了Java中使用異或語句實現(xiàn)兩個變量的互換,本文直接給出代碼實例以及運行結果,需要的朋友可以參考下
    2015-06-06
  • JavaWeb開發(fā)之使用jQuery與Ajax實現(xiàn)動態(tài)聯(lián)級菜單效果

    JavaWeb開發(fā)之使用jQuery與Ajax實現(xiàn)動態(tài)聯(lián)級菜單效果

    這篇文章主要介紹了JavaWeb開發(fā)之使用jQuery與Ajax實現(xiàn)動態(tài)聯(lián)級菜單效果的相關資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-10-10
  • Spring IOC控制反轉的實現(xiàn)解析

    Spring IOC控制反轉的實現(xiàn)解析

    這篇文章主要介紹了Spring IOC控制反轉的實現(xiàn),IOC是Spring的核心思想之一,它通過將對象的創(chuàng)建、依賴注入和生命周期管理交給容器來實現(xiàn)解耦,使開發(fā)者能夠更專注于業(yè)務邏輯的實現(xiàn),需要的朋友可以參考下
    2025-02-02
  • spring boot 本地圖片不能加載(圖片路徑)的問題及解決方法

    spring boot 本地圖片不能加載(圖片路徑)的問題及解決方法

    這篇文章主要介紹了spring boot 本地圖片不能加載(圖片路徑)的問題,解決的辦法其實很簡單,只要寫一個配置文件,也就是圖片位置的轉化器,原理是虛擬一個在服務器上的文件夾,與本地圖片的位置進行匹配。需要的朋友可以參考下
    2018-04-04

最新評論