layui登陸攔截處理

2021-09-17 04:41:21 字數 1568 閱讀 4576

由於 layuiadmin 接管了檢視層,所以不必避免可能會與服務端分開部署,這時你有必要了解一下 layuiadmin 預設提供的:從 登入 到 介面鑑權,再到 登出 的整個流程。

進入登入頁面登入成功後,會在 localstorage 的本地表中寫入乙個字段。如: access_token (名稱可以在 config.js 自定義)。***判斷沒有 access_token 時,則會跳轉到登入頁。儘管可以通過偽造乙個假的 access_token 繞過檢視層的攔截,但在請求介面時,會自動帶上 access_token,服務端應再次做一層校驗。

開啟config.js,將interceptor引數設定為true(該引數為 1.0.0-beta6 開始新增)。那麼,當其未檢查到access_token值時,會強制跳轉到登入頁面,以獲取 access_token。

開啟登入對應的視**件views/user/login.html,在**最下面,你將看到一段已經寫好的**,你需要的是將介面位址改為服務端的真實介面,並返回access_token值。

layuiadmin 會將服務端返回的access_token值進行本地儲存,這時你會發現 layuiadmin 不再強制跳轉到登入頁面。並在後面每次請求服務端介面時,都會自動在引數和 request headers 中帶上access_token,以便服務端進行鑑權。

若鑑權成功,順利返回資料;若鑑權失敗,服務端的code應返回1001(可在 config.js 自定義) , layuiadmin 將會自動清空本地無效 token 並跳轉到登入頁。

退出登入:重新開啟controller/common.js,搜尋logout,配上登出介面即可。

如果是在其它場景請求的介面,如:table.render(),那麼你需要獲取本地儲存的 token 賦值給介面引數,如下:

//設定全域性 table 例項的 token(這樣一來,所有 table 例項均會有效)

table.set(

,where:

});

//設定單個 table 例項的 token

table.render(

//,headers: {}

});

事實上,layuiadmin 的所有 ajax 請求都是採用admin.req(options),它會自動傳遞access_token,因此推薦你在 js 執行 ajax 請求時直接使用它。其中引數 options 和$.ajax(options)的引數完全一樣。

我們推薦服務端遵循jwt(json web token) 標準進行鑑權。對 jwt 不甚了解的同學,可以去搜尋一些相關資料,會極大地增加應用的可擴充套件性。當然,你也可以直接採用傳統的 cookie / session 機制。

SpringBoot實現登陸攔截

一 建立interceptor包,在interceptor中建立乙個 並實現handlerinterceptor component public class loginhandlerinterceptor implements handlerinterceptor else 二 建立乙個sprin...

SpringBoot登陸攔截 不攔截靜態資源

springboot登陸攔截,以及排除靜態資源攔截的兩種寫法 自定義 public class loginhandlerinterceptor implements handlerinterceptor else 配置 configuration public class mymvcconfig i...

vue中的登陸攔截

首先說思路,通過在路由規則中使用meta屬性,再配合鉤子函式beforeeach,實現登陸攔截功能 router.js import vue from vue import router from vue router import login from pages login import hom...