爲什麼需要token的個人理解

說明:個人理解,未必正確,請勿參考

 

cookie和session模式存在的問題:

1,session的生命週期比較短,用戶隔一段時間就需要重新登陸一次。默認情況下,瀏覽器關閉之後,cookie中保存的sessionid就會被清除,導致下一次打開瀏覽器訪問後臺的時候,又開啓新的會話。另外,不關閉瀏覽器,但是較長時間(比如超過20分鐘)不訪問後臺的話,session也會被銷燬。

2,由於移動端的存在,比如android,默認情況下,是不會和瀏覽器一樣在cookie中記錄sessionid,也不會和瀏覽器一樣,每次訪問的時候都帶上sessionid,因此,android每次訪問的時候都會在後臺生成一個新的session,這種情況,後臺因爲session中無法查到用戶信息,會認爲用戶沒有登陸。

 

使用token的情況:

前端(瀏覽器或者移動端)登陸的時候,後臺生成一個token(token中可以包含userId或者userName,但是千萬不要把密碼放入裏面),然後將token發送給前端,後臺不保存token。

前端每次訪問後臺的時候都在請求頭中帶上token,後臺通過算法驗證是否是自己簽發的token,是的話,可以認爲用戶已登陸。後臺拿到token之後可以解析出裏面的userId,然後進行權限認證,判斷是否有權限進行當前的操作。

 

token的好處:

1,後臺不用保存token,只需要算法驗證是否是自己簽發的token就可以了。

2,可以支持多種前端,移動端和瀏覽器都支持。

 

token可能的壞處:

1,每次都需要去數據庫中查詢權限信息,有session的情況下,可以直接將查詢出來的權限數據放到session中,之後每次再需要權限的時候,直接從session中取就可以了。不過可以使用內存緩存或者內存數據庫解決

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章