前後端分離,前端如何判斷登入失效?

時間 2021-05-12 05:52:56

1樓:IT老魁

首先token失效跟403稍微分開看

403是乙個http返回的狀態碼,表示訪問的資源被禁止訪問,沒有許可權訪問

token失效這個token是你自己程式控制的,當前端訪問後端資源的時候,後端根據前端傳遞的引數或者token的id或者session id等資訊判斷登入時候有效,如果失效就禁止訪問並返回403狀態碼。

所以403有可能是登入的token失效,也有可能,當前登入這個人沒有許可權訪問要檢視的資源等等。

要判斷失效有兩種做法

1,前端路由跳轉的時候請求後台判斷一些當前token是否失效。登入的狀態通常儲存在後端。或者前端有個定時任務定時請求後台判斷token是否失效來禁止前端後續操作。

2,前端請求後端的時候後端做一下token失效判斷,如果登入token失效就返回給前端乙個狀態碼,前端根據狀態碼之後做路由跳轉到登入介面

上面1,2邏輯通常都有,保證判斷的準確性。因為一定要清楚的是登入之後的各種上下文資訊都存在後端,前端最多儲存乙份副本,方便取當前登入人的資訊。不能作為判斷失效的標誌。

另外也不能僅僅通過403來判斷是否失效。這個自己控制就可以,像上面說的,專門有乙個介面來判斷token是否失效即可。

2樓:德懷特-霍建華

登入介面成功後,調驗證介面,驗證介面返回token,把token放在後面介面請求的header裡,每次調一次介面,都要後台驗證這個token,根據後台返回的資訊進行判斷登入是否失效

3樓:yi-jy

具體的403還是406,這只是和後端約定好的乙個登入資訊失效狀態碼。

而這種判斷登入資訊是不能在前端做的,因為一般的驗證邏輯是每次請求介面,請求頭攜帶token,而這個token是由後端服務根據加密演算法和使用者資訊在登入成功後生成的。所以,每次後端驗證的是這個token是否失效,如果失效了則返回乙個特定的狀態碼,比如你說的403,而前端要做的就是根據這個狀態碼清除本地相關cookie(如果需要),再提示使用者重新登入即可。

4樓:我de世界

這個就需要前後臺溝通了,後端獲取cookie,或者根據輸入的使用者名稱和密碼判斷是否是當前使用者和是否登入失效,然後返回固定的code提示當前登入使用者是否失效

5樓:麥芽花生糖

一般來說,登入成功後瀏覽器獲得後端傳來的乙個session id,這個id儲存在cookie中,並附帶在每次的http請求中。

cookie中儲存的內容可以設定有效期,如果過了有效期,這個session id就不在了,在後續的請求中,服務端收到請求後找不到session id,就說明登入失效

6樓:張昊

目前專案採用的方案

1. 除了登入介面所有藉口都需要在 http 請求頭中攜帶 token

2. 後端每個介面都會在 http response header 中返回 token

完整的就是:

前端請求帶上 token,後端校驗通過則計算新的 token 返回,前端下次請求帶上新的 token,這樣延長操作時間,只有超過一段時間不操作才會返回需要重新登入的 code,這時候前端給出提示或者重定向到登入頁面

7樓:周周見

如下圖:

(湊合看,流程還是清楚的~)

我前後端都寫,鑑權主要是兩種方案,後端登入授權採用jwt,登入請求如果成功,後台會給前台返回乙個token,前台拿到這個token後放到request.headers.anthorization中,前端傳送請求的地方需要做一層處理,請求時資訊頭中儲存token和收到返回的資訊後的錯誤提示可以在這裡做統一處理,如果沒有這個token後台會在有許可權的介面裡判斷然後返回401未授權。

github上有很多demo,一般搭乙個專案第乙個難點就是登入驗證這塊,建議你前後端都寫一遍,這樣就能掌握整個登入驗證的流程以及細節,如果還有餘力可以把許可權管理也加上。

關於token expired這個問題,我的處理方案是在前端埋乙個expiration的時間設定,在router.beforeEach(vue-router的route guard,用react或者angular也是同理)裡設定乙個方法進行攔截判斷,登入的時候開始計時,如果超期後只要觸發路由就會觸發這個方法,後台通過驗證會就會重新給前端傳送乙個新的token。這樣使用者在操作時頁面不會莫名其妙進行跳轉。

8樓:阿亮

http輪詢

以上技術都可以解決。

9樓:黃超偉

請求頭帶個token,如果token過期了,就讓後端返回個唯一值給你,專門用來判斷的,然後彈窗提醒登入過期、重定向到登入介面。

10樓:luffy5459

失效問題不用前段來判斷,一般登陸成功,會有乙個sessionid,記錄在cookie中,隨著每次請求,這個cookie會一直保持最新的失效時間,也就是只要有請求存在,你的頁面永遠不會失效。只有你不做操作了,後段預設設定的時間到了,再次操作才會失效。人為去通過介面判斷是否失效好像不可靠。

或者當方面計算前段cookie失效時間,這容易造成前後資料不一致。

前後端分離,如何處理前端的異常?

IceWilder 看了前面的回答,我不知道題主表達的是什麼意思。如果是服務端出現異常,返回相應的JSON前端邏輯根據不同的Code之類的去按照自己的邏輯處理就可以了。如果是超時的問題,即比如發乙個ajax請求,不知道是服務端掛掉還是響應未結束,可以設定乙個Timeout,然後一般這麼寫 promi...

現在前後端分離趨勢下,後端還要學習前端嗎

小小虎 肯定得了解呀,不然後臺就不知道要給前端返什麼型別的資料,我之前就遇到過乙個後台,一點都不懂前端,什麼東西都讓前端做,返給前端的資料都不規範,本身很簡單的json資料,硬是給了一組4維,操作起來太tm麻煩了 已登出 不學client side沒關係,但是http你得學,cookie怎麼用你得知...

前後端分離,前端用什麼框架來保證安全性?

沈贇傑 其實大可不必擔心太多前端安全性的問題,基本現在主流框架都幫你搞定了基本的防攻擊,至於比如oauth認證的,都是後端完成。前端只要保證頁面完整和穩定即可。 世家 前端的東西就是要人看的呀,不然怎麼叫前端?避免xss和csrf,不算子據庫。跟後台配合好許可權認證。其他的,還能做什麼? Tianf...