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 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...