javascript - 關(guān)于前后分離頁面登錄攔截問題
問題描述
項(xiàng)目是前后分離,后端只給前端接口,每一個接口帶token,現(xiàn)在有一些需要登錄才能進(jìn)去的頁面,前端如何攔截。比如:由A頁面 通過A標(biāo)簽跳轉(zhuǎn)到 B頁面(B頁面需要登錄才能進(jìn)去)。我現(xiàn)在做法是進(jìn)到B頁面,發(fā)送ajax請求,后臺返回狀態(tài)才做跳轉(zhuǎn)到登錄頁面,現(xiàn)在問題是我已經(jīng)進(jìn)到B頁面才做判斷很不合理。
問題解答
回答1:可以考慮點(diǎn)擊a標(biāo)簽的時候先發(fā)ajax請求再決定往哪跳轉(zhuǎn)?
回答2:可以自己封裝一個ajax請求,單獨(dú)判斷登錄狀態(tài),未登錄跳轉(zhuǎn)登錄,登錄直接返回數(shù)據(jù)
回答3:寫一個公共的js 在里面寫頁面加載函數(shù) 你需要登錄授權(quán)才能訪問的頁面就引用 然后在里面寫邏輯判斷
回答4:前端不做攔截,服務(wù)器端做攔截。前端攔截的話,只能在B頁面做,你考慮一下拼寫url進(jìn)入呢?B頁面訪問接口嘗試拿userinfo,拿到就是登陸了,沒拿到就沒登錄。
回答5:token一般都有過期時間,用localstorage保存token的時候帶上一個過期時間,頁面跳轉(zhuǎn)的時候先判斷token是否過期,過期了就跳登錄頁,沒有就繼續(xù)。如果是單頁的應(yīng)用這個就很好解決,如果不是單頁的話,就寫到一個公共js里。
回答6:肯定會由用戶某個交互動作 導(dǎo)致 跳轉(zhuǎn)到第二個頁面的, 再跳轉(zhuǎn)之前 進(jìn)行登錄驗(yàn)證, 沒有登錄就讓其登錄(或者注冊), 登錄(注冊)肯定要 封裝起來的, 封裝的時候 預(yù)留 登錄后的 成功回調(diào)和 注冊成功 后的回調(diào), 在回調(diào)函數(shù)中再做跳轉(zhuǎn) 到B頁面
回答7:這種兩種方法解決:1、服務(wù)端做驗(yàn)證 既然是要登錄才能進(jìn)去的頁面 必然會涉及到用戶權(quán)限 在B頁面發(fā)的ajax請求中有token 后端做token過期的驗(yàn)證 判斷是否有權(quán)限 報錯統(tǒng)一返回 前端寫一個公共方法驗(yàn)證沒有權(quán)限的錯誤信息 (這種方式要做到響應(yīng)的接口上 比較保險)2、前端在每個頁面寫個看門狗js,判斷存儲用戶信息中的過期時間 在做跳轉(zhuǎn)。
我看樓主的需求是想在點(diǎn)擊的時候做判斷是否跳轉(zhuǎn) 可以把a(bǔ)標(biāo)簽換成點(diǎn)擊函數(shù) 在函數(shù)中判斷 使用window.location.href = url 的方式跳轉(zhuǎn)頁面
回答8:lz前端框架用的什么? 我知道vue_router中有鉤子函數(shù)可以實(shí)現(xiàn), 在router.beforeEach的時候判斷是否登錄,如果沒有登錄就去登錄,如果登錄就直接next()
相關(guān)文章:
1. javascript - js 有什么優(yōu)雅的辦法實(shí)現(xiàn)在同時打開的兩個標(biāo)簽頁間相互通信?2. css3 - Typecho 后臺部分表單按鈕在 Chrome 下出現(xiàn)靈異動畫問題,求解決3. javascript - angular和jquery都用到了$符號,一起用會不會沖突?4. javascript - 怎樣限制同一個瀏覽器不能登錄兩個賬號5. 想找個php大神仿個網(wǎng)站。6. java - android代碼重構(gòu):如何把a(bǔ)pp設(shè)置里的頭像UI做成通用的?7. java - 新手做一個安卓視頻播放器,想實(shí)現(xiàn)一個進(jìn)度條,按鈕那種在視頻下方懸浮的功能,不知道思路!8. javascript - jquery怎么給select option一個點(diǎn)擊時觸發(fā)的事件,如圖 如果選擇自定義觸發(fā)一個時間?9. nginx配置server模塊的問題10. mysql優(yōu)化 - 關(guān)于mysql分區(qū)
