錯誤示范
用戶登錄后,使用 localStorage 方法在瀏覽器客戶端直接保存 user_id,每次進入網站時,通過識別 user_id 自動獲取用戶的信息並實現登錄。
錯誤點
瀏覽器 localStorage 保存的數據可能被——篡改
在瀏覽器控制台使用 localStorage.setItem() 即可更改當前 user_id,如果 user_id 被別人改了,那豈不是可以隨意竊取任何人的信息?
使用cookie保存用戶 id 也有一樣的風險,
所以使用這種方法做保存登錄狀態和自動登錄是不安全的
問題解決:Token
用戶登錄,后端加密生成 token,保存在用戶表中,並返回給前端
前端獲取 token,保存在 localStorage 中
自動登錄
進入網站,前端檢測到 token ,首先進行 token 驗證
后端驗證 token ,找到相關用戶,然后返回數據,實現登錄
發送請求,解析出 user_id
請求中攜帶 token
在需要驗證 token 的 controller 中定義 public function verifytoken() 方法
在需要驗證 token 的接口中調用這個函數,然后解析出 user_id
解決策略:
使用 localStorage + token 方法進行身份驗證
登錄:前端保存 token 和 個人信息(姓名、頭像等,不包括user_id)
每次進入網站先驗證 token 是否過期,如果沒過期,則保持當前狀態,如果過期,則清空本地 token 和 本地個人信息,並跳轉到登錄頁