javascript - 關于前后分離頁面登錄攔截問題
問題描述
項目是前后分離,后端只給前端接口,每一個接口帶token,現在有一些需要登錄才能進去的頁面,前端如何攔截。比如:由A頁面 通過A標簽跳轉到 B頁面(B頁面需要登錄才能進去)。我現在做法是進到B頁面,發送ajax請求,后臺返回狀態才做跳轉到登錄頁面,現在問題是我已經進到B頁面才做判斷很不合理。
問題解答
回答1:可以考慮點擊a標簽的時候先發ajax請求再決定往哪跳轉?
回答2:可以自己封裝一個ajax請求,單獨判斷登錄狀態,未登錄跳轉登錄,登錄直接返回數據
回答3:寫一個公共的js 在里面寫頁面加載函數 你需要登錄授權才能訪問的頁面就引用 然后在里面寫邏輯判斷
回答4:前端不做攔截,服務器端做攔截。前端攔截的話,只能在B頁面做,你考慮一下拼寫url進入呢?B頁面訪問接口嘗試拿userinfo,拿到就是登陸了,沒拿到就沒登錄。
回答5:token一般都有過期時間,用localstorage保存token的時候帶上一個過期時間,頁面跳轉的時候先判斷token是否過期,過期了就跳登錄頁,沒有就繼續。如果是單頁的應用這個就很好解決,如果不是單頁的話,就寫到一個公共js里。
回答6:肯定會由用戶某個交互動作 導致 跳轉到第二個頁面的, 再跳轉之前 進行登錄驗證, 沒有登錄就讓其登錄(或者注冊), 登錄(注冊)肯定要 封裝起來的, 封裝的時候 預留 登錄后的 成功回調和 注冊成功 后的回調, 在回調函數中再做跳轉 到B頁面
回答7:這種兩種方法解決:1、服務端做驗證 既然是要登錄才能進去的頁面 必然會涉及到用戶權限 在B頁面發的ajax請求中有token 后端做token過期的驗證 判斷是否有權限 報錯統一返回 前端寫一個公共方法驗證沒有權限的錯誤信息 (這種方式要做到響應的接口上 比較保險)2、前端在每個頁面寫個看門狗js,判斷存儲用戶信息中的過期時間 在做跳轉。
我看樓主的需求是想在點擊的時候做判斷是否跳轉 可以把a標簽換成點擊函數 在函數中判斷 使用window.location.href = url 的方式跳轉頁面
回答8:lz前端框架用的什么? 我知道vue_router中有鉤子函數可以實現, 在router.beforeEach的時候判斷是否登錄,如果沒有登錄就去登錄,如果登錄就直接next()
相關文章:
1. android - 用textview顯示html時如何寫imagegetter獲取網絡圖片2. css3 - css怎么實現圖片環繞的效果3. 在mac下出現了兩個docker環境4. javascript - 原生canvas中如何獲取到觸摸事件的canvas內坐標?5. css - 定位為absolute的父元素中的子元素 如何設置在父元素的下面?6. JavaScript事件7. 注冊賬戶文字不能左右分離8. javascript - jquery hide()方法無效9. html - vue項目中用到了elementUI問題10. 網頁爬蟲 - 用Python3的requests庫模擬登陸Bilibili總是提示驗證碼錯誤怎么辦?
