***配置
ide框架/腳手架
idea v2019.1.2
spring boot 2+
-vue cli 3+
前端攜帶賬戶資訊請求登入 -> 後端生成帶有壽命的token
-> 前端儲存token
到cookie/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失效後,假如使用者正在操作表單,此時突然定...