国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

FastAPI 自動(dòng)續(xù)簽 Token 與刷新機(jī)制詳解:讓用戶(hù)登錄更持久!

開(kāi)發(fā)
Refresh Token 是一種用于刷新 Access Token 的憑證。它不用于訪問(wèn)受保護(hù)資源,只用于生成新的 Access Token。

在 Web 應(yīng)用中,JWT(JSON Web Token)常用于身份認(rèn)證。但 JWT 通常有固定的過(guò)期時(shí)間,一旦過(guò)期就會(huì)導(dǎo)致用戶(hù)強(qiáng)制重新登錄 —— 這顯然影響體驗(yàn)。

解決方案?

引入 Refresh Token(刷新令牌)機(jī)制,實(shí)現(xiàn) Access Token 的自動(dòng)續(xù)簽!

一句話理解 Refresh Token

Refresh Token 是一種用于刷新 Access Token 的憑證。 它不用于訪問(wèn)受保護(hù)資源,只用于生成新的 Access Token。

整體流程圖

登錄成功后返回:
├── access_token(短期有效) → 用于訪問(wèn)接口  
└── refresh_token(長(zhǎng)期有效) → 用于刷新 access_token

?? 客戶(hù)端邏輯:
1. 每次請(qǐng)求攜帶 access_token
2. 如果接口返回 401(token 過(guò)期):
   - 使用 refresh_token 請(qǐng)求刷新接口,換一個(gè)新的 access_token
   - 自動(dòng)重試原請(qǐng)求

數(shù)據(jù)模型設(shè)計(jì)

新增 refresh_token 存儲(chǔ)字段(也可以存 Redis 中)。

models/user.py 示例: from tortoise import fields, models

from tortoise import fields, models

class User(models.Model):
    id = fields.IntField(pk=True)
    username = fields.CharField(max_length=50, unique=True)
    hashed_password = fields.CharField(max_length=128)
    refresh_token = fields.CharField(max_length=512, null=True)  # 新增

JWT 工具函數(shù)封裝(包含 refresh 支持)

from jose import jwt
from datetime import datetime, timedelta

SECRET_KEY = "your-access-token-secret"
REFRESH_SECRET = "your-refresh-token-secret"
ALGORITHM = "HS256"
ACCESS_TOKEN_EXPIRE_MINUTES = 15
REFRESH_TOKEN_EXPIRE_DAYS = 7

def create_access_token(data: dict, expires_delta: timedelta = None):
    to_encode = data.copy()
    expire = datetime.utcnow() + (expires_delta or timedelta(minutes=ACCESS_TOKEN_EXPIRE_MINUTES))
    to_encode.update({"exp": expire})
    return jwt.encode(to_encode, SECRET_KEY, algorithm=ALGORITHM)

def create_refresh_token(data: dict):
    expire = datetime.utcnow() + timedelta(days=REFRESH_TOKEN_EXPIRE_DAYS)
    to_encode = data.copy()
    to_encode.update({"exp": expire})
    return jwt.encode(to_encode, REFRESH_SECRET, algorithm=ALGORITHM)

def verify_refresh_token(token: str):
    try:
        payload = jwt.decode(token, REFRESH_SECRET, algorithms=[ALGORITHM])
        return payload
    except Exception:
        return None

登錄接口返回雙 token

@router.post("/login")
async def login(user: UserLoginSchema):
    user_obj = await authenticate(user.username, user.password)
    if not user_obj:
        raise HTTPException(status_code=401, detail="賬號(hào)或密碼錯(cuò)誤")

    data = {"sub": user_obj.username, "uid": user_obj.id}
    access_token = create_access_token(data)
    refresh_token = create_refresh_token(data)

    # 保存 refresh_token 到數(shù)據(jù)庫(kù)
    user_obj.refresh_token = refresh_token
    await user_obj.save()

    return {
        "access_token": access_token,
        "refresh_token": refresh_token,
        "token_type": "bearer"
    }

提供刷新接口 /refresh

@router.post("/refresh")
async def refresh_token(refresh_token: str = Body(...)):
    payload = verify_refresh_token(refresh_token)
    if not payload:
        raise HTTPException(status_code=401, detail="Refresh token 失效")

    # 確認(rèn)數(shù)據(jù)庫(kù)中 refresh_token 是否匹配(防止偽造)
    user = await User.get(id=payload["uid"])
    if user.refresh_token != refresh_token:
        raise HTTPException(status_code=401, detail="Refresh token 不合法")

    new_token = create_access_token({"sub": user.username, "uid": user.id})
    return {"access_token": new_token, "token_type": "bearer"}

小結(jié)

結(jié)合兩個(gè) token,我們實(shí)現(xiàn)了:

  • 安全性:短時(shí) Access Token 暴露后影響有限
  • 易用性:Refresh Token 自動(dòng)續(xù)期,無(wú)需頻繁登錄
責(zé)任編輯:趙寧寧 來(lái)源: Ssoul肥魚(yú)
相關(guān)推薦

2025-08-06 07:47:22

2011-07-15 09:57:03

MongoDB緩存刷新

2021-12-08 06:53:28

Choreograph屏幕機(jī)制

2021-04-21 07:53:13

Android屏幕刷新

2020-10-13 08:36:30

React 架構(gòu)機(jī)制

2010-09-06 08:43:13

.NET 4

2025-06-23 04:00:00

接口SpringToken

2012-05-02 14:41:04

jQuery

2021-09-27 06:29:01

Redis淘汰機(jī)制

2020-09-21 14:35:20

VuenextTick前端

2025-10-30 07:30:00

JavaScript身份驗(yàn)證Token

2010-03-10 11:55:30

Mocha BSM運(yùn)維管理摩卡軟件

2024-01-03 21:50:32

緩存機(jī)制請(qǐng)求

2025-04-25 08:30:00

前端后端用戶(hù)登錄

2024-09-06 17:49:46

2025-10-23 08:50:32

2016-03-17 10:20:57

2010-06-02 11:33:26

Linux 內(nèi)存監(jiān)控

2025-06-05 02:22:00

2024-09-02 10:46:57

點(diǎn)贊
收藏

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

亚洲电影免费观看高清| 欧美伦理91i| 999精品网站| 99精品免费| 中文字幕日韩欧美在线| 欧美日韩伦理片| 99热精品一区二区| 国产精品白丝jk白祙| 成人精品毛片| 精品调教chinesegay| 麻豆av电影在线观看| 成人a免费在线看| 久久久久久久免费| 国产探花在线精品| 久久精品成人动漫| 欧美xxxx免费虐| 色综合色狠狠综合色| 538任你躁在线精品免费| 麻豆免费精品视频| 国产精品国色综合久久| 欧美做受69| www.色综合| 欧美男男tv网站在线播放| 欧美性生活一区| 亚洲s色大片在线观看| 欧美激情一二三区| 久久国产精品网| 久久精品国产在热久久| 精品国产一区二区三区四区vr| 无码少妇一区二区三区| 日韩在线观看你懂的| 伊人久久精品一区二区三区| 欧美日韩卡一卡二| 国产三级视频在线| 欧美日韩国产中文字幕 | 69日小视频在线观看| 99热精品一区二区| 国产一区二区网| 国产999精品久久久久久| 亚洲欧洲久久| 视频在线观看91| 欧美精品一区二区视频| 亚洲美洲欧洲综合国产一区| 97超级碰碰| 好看的亚洲午夜视频在线| 91精品视频在线免费观看| 最新亚洲精品| 欧美中文字幕在线| 欧美极品中文字幕| 国产精品视频一| 99久久久久| 成人免费在线看片| 狠狠入ady亚洲精品经典电影| 91原创国产| 国产一区二区三区的电影 | www..com久久爱| 青青青在线观看视频| 国产中文字幕一区| 激情五月六月婷婷| 99国产精品国产精品毛片| 欧美日韩精品在线一区二区| 白白色亚洲国产精品| 青青青在线视频免费观看| 国产精品麻豆久久久| avtt天堂资源网| 午夜视频在线观看一区| 三级视频网站在线| 宅男在线国产精品| 高清不卡亚洲| 91精品国产乱码久久久久久久久| 日韩成人a**站| 久久精品国产理论片免费| 国内成人自拍视频| 久久综合色视频| 玉足女爽爽91| 2017亚洲天堂1024| 亚洲男人av电影| 国产色噜噜噜91在线精品| 国产日韩欧美在线看| 久热精品在线| 丰满爆乳一区二区三区| 一区二区成人在线| 最新国产露脸在线观看| 久久精品免费播放| 精品一区二区三| 日本在线观看一区二区| 久久午夜色播影院免费高清| 天天综合入口| 亚洲国产精品va| 国产成人aa在线观看网站站| 亚洲在线观看视频| 国产精品77777竹菊影视小说| 妺妺窝人体色www在线观看| 福利精品视频在线| 国产另类xxxxhd高清| 国产精品极品美女在线观看免费| 在线综合视频| 婷婷丁香激情网| 欧美高清dvd| 国产精品主播在线观看| 电影午夜精品一区二区三区| 国产高清久久久| 日本亚洲欧美| 久久久国产成人精品| 一区二区三区午夜探花| 日韩伦理在线免费观看| 欧美视频中文在线看| 精品无人乱码一区二区三区| 成人动漫网站在线观看| 福利一区福利二区| 精品一二三区视频| 色综合久久88| 日本视频免费一区| 一二三区在线视频| 欧美日韩xxxxx| 日本成人在线视频网站| 美女网站在线| 九九精品在线观看| 麻豆精品国产传媒mv男同| 在线手机福利影院| 久久久久北条麻妃免费看| 免费日韩视频| 精东影业在线观看| 久久久精品日本| 日av在线不卡| 婷婷国产在线| 8x海外华人永久免费日韩内陆视频 | 亚洲一区高清| 欧美日韩美女视频| 大陆精大陆国产国语精品| 综合视频在线观看| 欧美三级电影在线看| 深爱激情综合网| 播放灌醉水嫩大学生国内精品| 日韩手机在线导航| 午夜日韩av| 亚洲热app| 国产精品电影久久久久电影网| 91丨九色丨黑人外教| 亚洲女同志freevdieo| 久久精品aaaaaa毛片| 欧美性少妇18aaaa视频| 亚洲涩涩av| 欧美18—20岁hd第一次| 久久人人爽人人爽人人片亚洲| 精品综合久久久久久8888| 99视频免费在线观看| 国产日韩精品一区观看| 色综合久久综合中文综合网| 青草国产精品| av三级在线播放| 日韩**中文字幕毛片| 国产精品电影一区二区三区| 成人av综合网| 91亚洲免费视频| 97精品免费视频| 国产精品美女久久久久av爽李琼| 日韩精品中文字幕吗一区二区| 337p粉嫩大胆噜噜噜鲁| 日韩中文av在线| av亚洲精华国产精华精华| 怡红院成人在线| 日本中文字幕亚洲| 中文字幕国产亚洲| 成人国产精品免费观看| 99视频这里有精品| 性刺激的欧美三级视频| 国内精品久久久久久影视8| 国产欧美日本一区二区三区| 2023国产精华国产精品| 成人黄网18免费观看的网站| 8090成年在线看片午夜| 亚洲线精品一区二区三区八戒| 国产伦一区二区三区| 在线看片线路1| av噜噜色噜噜久久| 日韩欧美的一区| 国产一区二区在线视频| 婷婷成人av| 成人黄色免费电影| 国产在线拍揄自揄视频不卡99| 欧美性猛交xxxx免费看漫画| 亚洲专区免费| gay欧美网站| 农村妇女精品一二区| 欧美在线视频免费| 欧美日韩国产一中文字不卡| 亚洲欧美日韩国产一区| 在线天堂资源| 亚洲精品午夜在线观看| 国产一区红桃视频| 日韩精品一区二区三区在线播放| 国产一区二区福利视频| youjizz亚洲| 青青草视频在线免费观看| 色一情一区二区三区四区 | 人人九九精品视频| 久久久亚洲精华液精华液精华液 | 69国产精品成人在线播放| 亚洲3atv精品一区二区三区|