前後端分離token驗證

2021-10-14 11:21:07 字數 2638 閱讀 1212

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 redistemplateredistemplate;

/** * 生成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並續期 前端退出 後端...

前後端分離 頁面許可權驗證

前端驗證 登入後 新增登入標識 localstorage.login true inc.js 公共標頭檔案處理,沒有登入 跳轉登入 top.location.href 獲取本地絕對路徑或網域名稱訪問路徑 var href document.location.href var abspath absp...