前後端Token驗證

2022-09-07 14:30:13 字數 2913 閱讀 8047

***配置

ide框架/腳手架

idea v2019.1.2

spring boot 2+

-vue cli 3+

前端攜帶賬戶資訊請求登入 -> 後端生成帶有壽命的token-> 前端儲存tokencookie/localstorage前端每次請求api都攜帶token頭欄位 -> 後端檢測token並續期

前端退出 -> 後端清除token

前端除登入外每次請求api都需要攜帶token頭欄位,為了方便操作,可以給資料請求框架( ajax、fetch、axios等)加乙個全域性過濾器(或***)

例如axios的語法為:

axios.interceptors.request.

use(config =>`;

}return config;

},err =>

);

新增了"authorization"頭字段後效果如下:

後端生成的token需帶有生命期,防止前端過長時間不去退出而造成賬戶安全問題,針對生命期的管理,這裡使用redis儲存系統,實現token儲存刪除超時自動刪除功能

// 啟動,啟動後後台執行

// 預設服務埠6379

redis-server.exe redis.windows.conf

// 操作,啟動上面那個至後才能操作

redis-cli.exe -h 127.0.0.1 -p 6379

要使用redistemplate就必須開啟redis服務

@autowired

private redistemplate

redistemplate;

/** * 生成token

* @param userid 使用者id

* @return token

* */

public string createtoken

(int userid)

/**

* 檢查token

* @param token

* @return true更新token;false令牌不存在

* */

public boolean checktoken

(string token)

string[

] arr1 = token.

split

("_");

// 分解token

if(arr1.length !=2)

try redistemplate.

opsforvalue()

.set

(key, token,

// 更新token時長

12, timeunit.hours)

;return

true;}

catch

(exception e)

return

false

;}

/**

* 登出token

* @param token

* @return true成功;false失敗

* */

public boolean cleartoken

(string token)

string[

] arr1 = token.

split

("_");

// 分解token

if(arr1.length !=2)

try redistemplate.

delete

(key)

;return

true;}

catch

(exception e)

return

false

;}

前端傳送的除登入以外的每一次請求,都應進行攔截,檢測token注意:前端在進行複雜跨域請求前,會進行一次預請求(options),試探性的伺服器響應是否正確,然後才會傳送真正請求,所以***也應放行預請求

@configuration

public

class

tokeninterceptor

extends

webmvcconfigurationsupport

// 非options請求token驗證

string token = request.

getheader

("authorization");

if(token != null)

}return

false;}

};// 攔截路徑配置,不攔截 login(exclude表示排除)

registry.

addinterceptor

(handlerinterceptor)

.excludepathpatterns

("/*/login");

}}

前後端分離 token驗證

1,前端請求登入後,後端用使用者名稱和加上當前時間生成乙個token,存入redis,然後返回給前端。2,以後每次請求前端在header中帶上token 3,後端判斷token是否有效,有效則放行,無效則重定向到登入頁面。描述 ajax請求返回的json資料或者html.預設的是區域性重新整理頁面。...

前後端分離token驗證

ide框架 腳手架 idea v2019.1.2 spring boot 2 vue cli 3 前端攜帶賬戶資訊請求登入 後端生成帶有壽命的token 前端儲存token到cookie localstorage前端每次請求api都攜帶token頭欄位 後端檢測token並續期 前端退出 後端清除t...

前後端分離 token超時重新整理策略

記錄一下前後端分離下 token超時重新整理策略!昨天發了一篇記錄 前後端分離應用 使用者資訊傳遞 中介紹了token認證機制,跟幾位群友討論了下,有些同學有這麼乙個疑惑 token失效了,應該怎麼做?強制定向到登入頁?其實理論上如果是活躍使用者,token失效後,假如使用者正在操作表單,此時突然定...