(html)前端如何驗證token的合法性來判斷用戶是否登錄?


問題: (html)前端如何驗證token的合法性來判斷用戶是否登錄?
描述:

1、我使用了JWT的方式,后端生成了一個token,將其返回給前端,前端獲取到后每次請求接口都附帶上這個token,后端來判斷這個token是否合法,如果不合法,后端該如何讓其重定向到登錄頁面?是前端根據后端返回的錯誤信息讓前端重定向嗎?
2、使用react-router之類的前端路由,我在切換路由的時候怎么判斷用戶是否已經登錄了呢?畢竟有的頁面不能讓未登錄的用戶訪問,如果沒有登錄,就在前端將其重定向到登錄頁面。這個是要在每次切換前端路由的時候向后端發送一個請求來驗證嗎?如果驗證通過了才將頁面切換過去。
3、或者還有沒有什么更好也更安全的保持登錄狀態的方法呢?


解決方案1:

樓上說的都沒錯, 我也正在搞這個。 后端驗證返回錯誤碼, 前端判斷是登錄還是權限不足。

解決方案2:

1 token保存在前端 后端驗證不通過返回錯誤碼 由前端重定向
2 用react了肯定是個單頁應用 你路由跳轉不需要去驗證 只要登錄的時候驗證了就可以了 后續的通過每個接口的權限驗證來判斷是否有頁面權限

解決方案3:

正在用laravel jwt和vue寫項目在,說下我的想法:
首先,前后端一定要有個約定,即返回的數據格式如何處理錯誤。比如我們返回的json的數據格式(高級點還有http status響應機制)

{
    "code": 0, // 0代表成功,1失敗,2未登錄....
    "msg": "修改成功!"
    "data":[]
}
  1. 前端每次請求路由之前做個響應(vue對應的是router.beforeEach方法,這里我不太了解react,但是你查下肯定有這個方法),先判斷本地是否有存儲用戶的登錄信息,無則直接返回登錄頁面(or其它業務頁面),有則進行你的其它操作,這里已經回答第二個問題了,至於你說的部分頁面才需要用戶登錄,也很簡單,只需要對路由進行分組處理

  2. 登錄之后,將后端返回的信息包裝存儲本地,比如token及用戶信息,以備下次調用

  3. 這里回到你的第一個問題,當用戶請求通過路由前的判斷,也就是前端認為用戶已登錄用token去請求后端api的時候,后端返回token過期或者錯誤的時候怎么處理?這個時候返回的數據code=2,那么我們只需要在統一請求后端api接口的地方做個響應,當code=2,清空本地存儲的用戶數據,前端路由到登錄頁即可,這里不該后端去重定向

  4. 第三個問題不好回答,安全是相對的,這個方式已經很安全了。設計的符合用戶習慣,業務邏輯無問題就是我的目標

  5. 你的標題貌似有問題,token的合法性是后端去判斷的,應該問前端如何根據后端對token驗證的結果做出響應


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM