精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

接口不掉線,用戶不登出!SpringBoot 無感刷新 Token 全解析

開發(fā) 前端
實現(xiàn)無感刷新 Token,是用戶體驗與安全性協(xié)同優(yōu)化的重要實踐。通過后端智能判斷與前端攔截配合,結(jié)合雙 Token 模式或動態(tài)續(xù)簽機制。

在現(xiàn)代 Web 系統(tǒng)中,用戶體驗與安全性的平衡是后端開發(fā)的核心命題。本文將基于實際業(yè)務(wù)場景,全面剖析如何借助 Spring Boot 實現(xiàn)“用戶在線不中斷,身份自動續(xù)簽”的無感刷新 Token 機制,并結(jié)合前后端聯(lián)動,構(gòu)建完整的 Token 生命周期管理方案。

背景問題:為什么需要無感刷新?

想象這樣一個場景:

“我正在后臺管理系統(tǒng)中錄入數(shù)據(jù),頁面突然跳轉(zhuǎn)回登錄界面,之前填寫的內(nèi)容全沒了!”

這是典型的 Token 到期導致會話失效 的問題,尤其在使用 Redis 等緩存中間件存儲 Token 時尤為常見。

問題根源

后端通常通過 JWT 來實現(xiàn)無狀態(tài)身份驗證,但 JWT 的缺陷也很明顯:過期即失效,無法修改或撤銷。如果不設(shè)計 Token 刷新機制,用戶體驗將大打折扣。

核心策略:Token 無感續(xù)簽方案概述

方案一:后端自動續(xù)期(推薦)

在每次用戶請求時,后端檢查當前 Token 的有效時間:

  • 若臨近過期(如小于5分鐘),則動態(tài)生成一個新 Token,加入響應(yīng)頭中返回;
  • 前端攔截響應(yīng)頭,若發(fā)現(xiàn)新的 Token,與本地不一致則自動更新本地 Token。

方案二:前端主動續(xù)簽(補充方案)

  • 前端維護一對 Token:access_token(短期)+ refresh_token(長期);
  • 每隔一段時間,前端使用 refresh_token 去調(diào)用刷新接口,獲取新的 access_token

后端實現(xiàn)細節(jié)

依賴配置(pom.xml)

<dependencies>
    <dependency>
        <groupId>cn.hutool</groupId>
        <artifactId>hutool-all</artifactId>
        <version>5.5.1</version>
    </dependency>
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
        <version>1.2.33</version>
    </dependency>
    <dependency>
        <groupId>io.jsonwebtoken</groupId>
        <artifactId>jjwt</artifactId>
        <version>0.9.1</version>
    </dependency>
</dependencies>

JWT 工具類 JwtUtil.java

 代碼路徑:/src/main/java/com/icoderoad/auth/utils/JwtUtil.java

package com.icoderoad.auth.utils;


import io.jsonwebtoken.*;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import java.util.*;


public class JwtUtil {
    public static final long JWT_TTL = 1000L * 60 * 60 * 24; // 24小時
    public static final String JWT_KEY = "qx";


    public static String createJWT(String subject) {
        return getJwtBuilder(subject, null, UUID.randomUUID().toString().replace("-", "")).compact();
    }


    public static String createJWT(String subject, Long ttlMillis) {
        return getJwtBuilder(subject, ttlMillis, UUID.randomUUID().toString()).compact();
    }


    private static JwtBuilder getJwtBuilder(String subject, Long ttlMillis, String uuid) {
        long nowMillis = System.currentTimeMillis();
        long expMillis = (ttlMillis != null ? nowMillis + ttlMillis : nowMillis + JWT_TTL);
        SecretKey secretKey = generalKey();
        return Jwts.builder()
                .setId(uuid)
                .setSubject(subject)
                .setIssuer("icoderoad")
                .setIssuedAt(new Date(nowMillis))
                .setExpiration(new Date(expMillis))
                .signWith(SignatureAlgorithm.HS256, secretKey);
    }


    public static Claims parseJWT(String jwt) throws Exception {
        return Jwts.parser()
                .setSigningKey(generalKey())
                .parseClaimsJws(jwt)
                .getBody();
    }


    public static SecretKey generalKey() {
        byte[] key = Base64.getDecoder().decode(JWT_KEY);
        return new SecretKeySpec(key, 0, key.length, "AES");
    }


    public static Date getExpiration(String jwt) {
        try {
            return parseJWT(jwt).getExpiration();
        } catch (Exception e) {
            throw new RuntimeException("Token 解析失敗", e);
        }
    }
}

Token 攔截與續(xù)簽邏輯

 攔截器路徑:/src/main/java/com/icoderoad/auth/interceptor/AuthInterceptor.java

public class AuthInterceptor implements HandlerInterceptor {


    private static final long REFRESH_THRESHOLD = 1000L * 60 * 5; // 剩余5分鐘內(nèi)刷新


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


        String token = request.getHeader("Authorization");
        if (StringUtils.isEmpty(token)) {
            throw new RuntimeException("未登錄");
        }


        Claims claims = JwtUtil.parseJWT(token);
        long now = System.currentTimeMillis();
        long exp = claims.getExpiration().getTime();


        if (exp - now < REFRESH_THRESHOLD) {
            String newToken = JwtUtil.createJWT(claims.getSubject());
            response.setHeader("X-Token-Refresh", newToken);
        }


        return true;
    }
}

前端處理邏輯(以 Vue + Axios 為例)

前端攔截代碼:

axios.interceptors.response.use(response => {
    const newToken = response.headers['x-token-refresh'];
    if (newToken && newToken !== localStorage.getItem('access_token')) {
        localStorage.setItem('access_token', newToken);
    }
    return response;
}, error => {
    // 處理401
    if (error.response.status === 401) {
        // 可以保存草稿后跳轉(zhuǎn)登錄
    }
    return Promise.reject(error);
});

關(guān)于 AccessToken 和 RefreshToken 的機制說明

類型

用途

特點

AccessToken

攜帶用戶身份,頻繁使用

安全風險高,需短時過期

RefreshToken

用于續(xù)簽 AccessToken

不暴露給前端,一般保存在 Cookie 或 HttpOnly

標準雙 Token 模式提升了安全性和用戶體驗,避免因 AccessToken 頻繁刷新帶來的資源浪費。

特別討論:表單靜默超時的處理策略

場景問題:

用戶長時間填寫表單,沒有發(fā)出任何請求,點擊提交時發(fā)現(xiàn) token 已失效,被重定向到登錄頁,數(shù)據(jù)全丟。

推薦方案:

  • 提交失敗后前端本地緩存表單數(shù)據(jù);
  • 登錄成功后回顯草稿,確保用戶體驗不受損;
  • 或者在用戶輸入行為時定期心跳請求,觸發(fā)后端續(xù)簽。

總結(jié)

實現(xiàn)無感刷新 Token,是用戶體驗與安全性協(xié)同優(yōu)化的重要實踐。通過后端智能判斷與前端攔截配合,結(jié)合雙 Token 模式或動態(tài)續(xù)簽機制,我們可以實現(xiàn):

用戶操作不中斷 身份憑證自動續(xù)期 安全控制粒度更靈活

責任編輯:武曉燕 來源: 路條編程
相關(guān)推薦

2025-10-30 07:30:00

JavaScript身份驗證Token

2025-08-06 07:47:22

2022-09-28 12:39:46

axios攔截器

2024-07-11 10:38:02

2009-03-06 10:01:00

802.11nWLAN

2025-01-15 09:21:01

2012-05-02 14:41:04

jQuery

2009-12-24 13:15:03

2011-09-07 13:37:40

撥號掉線

2019-10-25 20:00:06

華為

2010-10-08 12:06:40

聯(lián)動菜單JavaScript

2025-04-25 08:30:00

前端后端用戶登錄

2025-07-02 08:10:01

StarRocks物化視圖MV

2012-12-17 11:32:53

無線路由器WLAN

2025-02-10 09:20:00

LinuxScreen終端

2024-04-17 12:59:18

前端Token開發(fā)

2025-05-30 02:00:00

Spring接口限流

2018-01-17 09:44:37

LinuxUnix用戶訪問

2025-11-13 10:13:37

Kubernetes運維集群

2011-04-26 13:47:28

墨盒噴墨打印
點贊
收藏

51CTO技術(shù)棧公眾號

亚洲久久久久久| 一区二区不卡在线视频 午夜欧美不卡'| 精品欧美一区二区久久久久| 亚洲视频国产| 国产精品看片你懂得| 成人免费在线网址| 精品久久免费视频| 国产欧美日韩精品一区二区免费 | 极品美妇后花庭翘臀娇吟小说| 丁香婷婷久久| 一区二区三区久久| 蜜桃传媒视频麻豆第一区免费观看 | 亚洲私人黄色宅男| 国产精品一区二区三区在线| 久久露脸国语精品国产91| 一区三区在线欧| 欧美日韩夫妻久久| 2018中文字幕第一页| 九一在线视频| 国产精品一区二区在线播放 | 国产精品毛片va一区二区三区| youjizz在线视频| 久久久久av| 日韩久久免费视频| 中文字幕在线综合| 国产精品蜜芽在线观看| 国产精品毛片大码女人| 国产一区二区三区四区五区在线| 国产精品自拍第一页| 欧美精品激情| 日韩成人性视频| www.桃色.com| 欧美91看片特黄aaaa| 亚洲免费在线看| 欧美在线播放一区| 粉嫩av一区二区夜夜嗨| 久久99精品久久久久久动态图| 97超碰蝌蚪网人人做人人爽| 国产女人18水真多毛片18精品| 五月天亚洲一区| 日韩女优视频免费观看| 日本人视频jizz页码69| 忘忧草在线日韩www影院| 亚洲精品美国一| 日韩三级电影免费观看| 人人妻人人澡人人爽精品日本| 久久精品久久久精品美女| 日本久久久久久久| 老女人性淫交视频| 日韩在线观看一区 | 555www成人网| 成人免费看片98| 99成人在线视频| 日韩精品一区二区视频| 国产精品熟妇一区二区三区四区| 欧美男男gaygay1069| 精品美女久久久久久免费| 免费网站永久免费观看| 91黄色在线| 亚洲品质自拍视频| 一本一本a久久| 福利成人在线观看| 久久精品夜色噜噜亚洲aⅴ| 久久综合伊人77777麻豆| 韩国av在线免费观看| 国产激情一区二区三区四区| 91在线免费视频| 国产乱淫a∨片免费观看| 精品一区二区三区久久| 91精品国产综合久久香蕉最新版 | 黄色的网站在线观看| 国产精品午夜春色av| 亚洲不卡一卡2卡三卡4卡5卡精品| 日韩一区免费视频| 99久久综合色| 精品乱子伦一区二区三区| 色欲av永久无码精品无码蜜桃| 粉嫩嫩av羞羞动漫久久久| 国产欧美日韩视频| 一级特黄特色的免费大片视频| 亚洲激情欧美| 欧美一级视频免费在线观看| 免费视频久久久| 中文日韩在线| 国产精品第一视频| 一级特黄aaa| 国产另类ts人妖一区二区| 91九色露脸| 凸凹人妻人人澡人人添| 久久久久久久综合狠狠综合| 亚洲国产日韩综合一区| av在线影院| 亚洲成a人v欧美综合天堂下载 | 日韩一区二区免费看| 欧美中文字幕在线播放| 中文字幕+乱码+中文乱码www| 老色鬼精品视频在线观看播放| 国产精品国产福利国产秒拍| 91丨九色丨蝌蚪丨对白| 国产成人精品三级麻豆| 国产自产精品| 国产尤物视频在线| 国产日韩欧美在线一区| dy888午夜| 91九色美女在线视频| 在线免费一区三区| 日韩欧美中文在线视频| 秋霞影院一区二区三区| 中文字幕精品视频| 欧美另类视频在线观看| 性感少妇一区| 亚洲字幕一区二区| www.色日本| 国产色一区二区| 亚洲色婷婷久久精品av蜜桃| 自拍在线观看| 欧美一级欧美三级| www.日本高清| 97精品97| 日本免费在线精品| www.四虎在线观看| 中文字幕成人在线观看| 黄色一级在线视频| 亚洲午夜国产成人| 日韩精品极品在线观看| 手机在线免费看片| 久久久国产亚洲精品| 亚洲综合色激情五月| 精品无人乱码| 婷婷开心激情综合| 日韩av加勒比| 日韩欧美一区二区三区在线视频| 国内伊人久久久久久网站视频| 亚洲一级av毛片| 91一区二区在线| 特级西西人体www高清大胆| 97欧美成人| 精品小视频在线| 九九九在线视频| 精品一区二区三区免费观看| 视频在线99| 成人免费图片免费观看| 日韩女优av电影在线观看| 呻吟揉丰满对白91乃国产区| 欧美亚洲三区| 成人欧美一区二区三区在线观看 | 夜鲁夜鲁夜鲁视频在线播放| 日韩精品一区二区三区在线观看| jizz日本在线播放| 日韩av成人高清| 日本一区二区三区免费看| 玖玖在线播放| 亚洲精品动漫久久久久| 国产一级生活片| 国产美女娇喘av呻吟久久| 亚洲精品二区| 成人在线观看免费播放| 亚洲日本成人女熟在线观看| 国产精品久久久久久久久久久久久久久久久 | 久久久久一本一区二区青青蜜月| 精品人妻久久久久一区二区三区 | 最新av电影网站| 久久福利视频一区二区| 亚洲高清乱码| 亚洲热av色在线播放| 久久久精品国产| 久草热在线观看| 国产三级欧美三级日产三级99| 久久国产色av免费观看| 欧美禁忌电影| 国产精品久久久久av| av色图一区| 欧美日韩小视频| 91蝌蚪porny九色| 日韩精品一区国产麻豆| 精品伦精品一区二区三区视频密桃| 日韩成人免费在线| 亚洲成人网上| 国产视频一区二区在线播放| 久热在线中文字幕色999舞| 国产乱码精品一区二三区蜜臂 | 中文字幕 久热精品 视频在线| 十八禁视频网站在线观看| 亚洲va久久久噜噜噜久久| 日本精品视频在线观看| 国产视频第一页在线观看| 91久久精品一区二区三| 久久精品三级视频| 国内精品久久久久影院色 | 欧美日韩ab| 国产视频精品网| 在线日韩影院| 中文字幕亚洲综合| a级片在线免费看| 亚洲国产精品欧美一二99| 日韩av无码一区二区三区不卡| 伊人久久成人| 日韩欧美亚洲精品| 成人av在线播放| 91精品国产九九九久久久亚洲| 免费黄网站在线观看| 欧美群妇大交群中文字幕| 黄色一级视频免费| 久久―日本道色综合久久| 天堂av在线网站| 99久久激情| 精品不卡在线| 欧美激情啪啪| 欧美国产激情18| 狠狠v欧美ⅴ日韩v亚洲v大胸 | 极品粉嫩国产18尤物| 国产一区二区三区四区二区| 国产精品入口日韩视频大尺度 | 国产亚洲高清一区| 羞羞色国产精品| 中文字幕在线视频区| 精品国产91乱码一区二区三区| 亚洲毛片一区二区三区| 亚洲女女做受ⅹxx高潮| 香蕉网在线播放| 国产乱码精品一区二区三区av| 精品人妻一区二区三区四区在线 | 久久av老司机精品网站导航| 亚洲美免无码中文字幕在线| 四虎成人av| 精品999在线观看| 免费精品一区| 91a在线视频| 自拍亚洲图区| 中文字幕亚洲色图| 精品女厕一区二区三区| 亚洲欧美在线不卡| 国产高清在线精品| 8x8x成人免费视频| 毛片不卡一区二区| 亚州精品一二三区| 老**午夜毛片一区二区三区| 日韩免费一级视频| 亚洲免费精品| 久激情内射婷内射蜜桃| 欧美不卡一区| 国风产精品一区二区| 久久久久美女| 亚洲美女自拍偷拍| 日韩欧美一区二区三区免费看| 日韩中文一区| 日本精品三区| 亚洲一区精彩视频| 99久久99热这里只有精品| 一区二区三区久久网| 欧美顶级大胆免费视频| 亚洲欧美日韩另类精品一区二区三区| 波多野结衣在线观看一区二区| 日本不卡一区| 久久影视一区| av磁力番号网| 精久久久久久| 久久久亚洲精品无码| 午夜在线精品| 亚洲性生活网站| 久久成人久久爱| 伊人免费视频二| 国产 日韩 欧美大片| 北京富婆泄欲对白| 91在线高清观看| 日韩av片在线| 亚洲免费资源在线播放| 日韩av在线电影| 黑人巨大精品欧美一区二区一视频 | 韩国一区二区三区四区| 成人激情文学综合网| 人妻无码中文久久久久专区| 久久久一区二区| 激情高潮到大叫狂喷水| 亚洲精品乱码久久久久久日本蜜臀| 久草免费新视频| 欧美日韩亚洲一区二| 亚洲综合成人av| 欧美一区二区不卡视频| 免费成人在线看| 国产亚洲精品美女| 成年视频在线观看| 欧美一级片一区| 日日夜夜亚洲精品| av色综合网| 国产精品自拍区| 伊人av成人| 国产情侣久久| 91亚洲精品久久久蜜桃借种| 成人av网站免费| av免费播放网站| 亚洲五码中文字幕| 中文字幕理论片| 欧美精品一区二区在线播放 | 欧美成人在线影院| 成人影院网站| 97人人干人人| 国产99久久久国产精品成人免费| 国产福利片一区二区| 亚洲深爱激情| 美女被爆操网站| 国产日产精品一区| 国产一级免费av| 在线观看日韩高清av| 亚洲精品久久久狠狠狠爱| 亚洲午夜未满十八勿入免费观看全集| 高潮毛片在线观看| 国产999精品视频| 久久激情av| 91看片淫黄大片91| 日韩成人午夜电影| 精品夜夜澡人妻无码av | 国产成人在线播放视频| 欧美日韩高清一区二区不卡| 日韩美女一级视频| 欧美激情第一页xxx| 中文成人在线| 亚洲精品一卡二卡三卡四卡| 国产视频一区免费看| 丰满少妇一区二区三区专区| 国产日韩欧美不卡在线| 天堂网av手机版| 精品日韩欧美在线| 黄页视频在线播放| 国产成人在线亚洲欧美| 丝袜久久网站| www.xxx麻豆| 国产精品一区二区免费不卡| 国产小视频你懂的| 欧美系列一区二区| 国产高清视频在线观看| 欧亚精品在线观看| 另类图片第一页| 国产一级爱c视频| 成人黄页在线观看| 69xx绿帽三人行| 91精品国产综合久久精品| 夜级特黄日本大片_在线| 国产精品久久久久久久7电影| 亚洲黄色录像| 91视频 -- 69xx| 91丨九色丨黑人外教| 国产性xxxx高清| 亚洲黄色av女优在线观看| 欧美黑人猛交的在线视频| av蓝导航精品导航| 欧美日韩国产亚洲一区| 亚洲区 欧美区| 亚洲自拍偷拍av| 亚洲第一成人av| 国内精品小视频| 亚洲v天堂v手机在线| 大肉大捧一进一出好爽视频| 91日韩一区二区三区| 中文字幕在线看人| 亚洲午夜性刺激影院| www.久久.com| 伊人久久大香线蕉综合75| 国内精品在线播放| 国产一级特黄a高潮片| 精品国产一区a| 91久久国产综合久久91猫猫| 欧洲一区二区在线| 毛片基地黄久久久久久天堂| 国产美女久久久久久| 精品国产乱码久久久久久影片| 岛国av免费在线观看| 欧美日韩成人一区二区三区| 免费一区二区视频| 老湿机69福利| 日韩成人网免费视频| 91av一区| 国产女教师bbwbbwbbw| 91香蕉视频mp4| 亚洲一区在线观| 久久久久久亚洲精品不卡| 亚洲肉体裸体xxxx137| 午夜剧场在线免费观看| 亚洲综合激情另类小说区| 天天摸夜夜添狠狠添婷婷| 国产精品久久久久av| 欧美日韩岛国| 欧美老熟妇乱大交xxxxx| 欧美日韩国产在线观看| 午夜羞羞小视频在线观看| 精品在线不卡| 久久成人羞羞网站| 国产午夜在线播放| 在线视频国产日韩| 日韩精品一区二区三区中文字幕| heyzo亚洲| 亚洲视频在线一区二区| 污视频在线免费观看| 国产主播在线一区| 一本综合久久| 婷婷伊人五月天| 亚洲欧美中文日韩在线| 国产视频一区二区在线播放| av免费网站观看| 一区二区三区欧美日|