--- title: Refresh token tags: v2 --- # Refresh token ## 現況 - 目前有使用套件 [jose](https://github.com/panva/jose/tree/688ab7f888af8bd7d3e98b301c625f842449473e) 來產生 access token 給前端使用 - token 內在 jwt id 有帶入 hash(帳號 + 密碼),藉此檢查 user 是否更改過密碼 ## 需求 - 需要 refresh token 來讓 user 可以不用一直被登出,可以自動刷新 access token ## 規劃 - refresh token 設定過期時間為 3 天 - jwt id 也使用 hash(帳號 + 密碼),藉此檢查 user 是否更改過密碼,避免 user 更改過密碼卻還可以拿到 access token - private key 是否用一樣的? - 好像可以 ## 如何 refresh token 1. 登入後回傳 access token, refresh token 2. 新開一隻 API,拿 refresh token 來刷新 access token,並獲得新的 refresh token ## API ### pseudocod ```javascript= check(refreshToken) if(ok) { generate new accessToken generate new refreshToken req.session.access_token = new accessToken; req.session.refreshToken = new refreshToken; update old refreshToken to new refreshToken } ``` [POST] `/api/v2/authentication/refresh-token` - 帶入 cookie 即可 ```json= Input: { } Output: { access_token: String, refresh_token: String } ``` ```javascript= 檢查 accessToken if(accessToken 過期) { 檢查 refreshToken if (refreshToken 過期) { return null // 請重新登入 } // refresh access and refresh token generate new accessToken generate new refreshToken } ```
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up