前言:
token登入上一家公司也寫過,迷迷糊糊的,
邏輯整理一下還是比較簡單的
主要的問題還是,如何在框架中找到較好的插入點,這個框架沒有user/login的基類,框架結構簡單到爆,找不到插入點,
好吧,明月幾時有,把酒問青天。
思路:
1、首先使用者表中新增token欄位和token_time欄位,token是md5()生成的32位字串,token_time是上次重新整理token的時間
2、使用者註冊完可以沒有token,因為接下來會自動登入一下,而且是通過使用者名稱登入,使我們想要的味道,猥瑣~ ~
3、通過使用者名稱密碼登入的步驟:
⑴、通過使用者名稱拿到使用者資訊$identity,並賦值給乙個靜態變數, 後期業務時使用
⑵、對比密碼
⑶、判斷token是否超過重新整理時間間隔(我設定86400秒)
⑷、不超過直接返回當前使用者的token
⑸、超過86400秒則重新整理,md5生成新token
⑹、通過⑶、⑷、⑸ 我們得到乙個確定的token,現在將這個token以及現在的時間戳更新到使用者表中的token和token_time欄位
⑺、登入成功,將前端需要的使用者資訊返回
4、通過token登入:
⑵ 、如果訪問的介面需要登入,呼叫乙個驗證方法
⑶、 在該方法中,先通過token查詢使用者,獲取使用者資訊,並賦值給乙個靜態變數,返回true或者false
⑷、上一步返回true,則說明使用者登入成功,繼續介面的呼叫,並可以在介面中通過靜態變數獲取使用者的id以及其他資訊。
總結:
通過token, 使用者每次調取介面的時候只需要傳token, 不用傳uid,我們就可以驗證身份並確定uid
僅提供使用者名稱密碼登入的**進行參考
publicfunction login($user_name, $passwd
)
unset($identity ->passwd);
//根據重新整理時間間隔是否超過,獲取乙個token
$token = $identity -> refresh_token($identity
);
//更新使用者表中的token和time
$identity -> update_token($identity->id, $token
);
$identity -> token = $token
;
unset($identity ->refresh_time);
return
$this ->_formatreturndata(true, $identity
); }
關於登入 token 的設計
設計要點 token 中不要加入到期時間,因為每次有效請求,都要更新 token 的到期時間,如果把到期時間加入到 token 中,那麼每次請求就要生成新的 token 並且隨同請求資料返回給客戶端替換舊的 token,這樣實在是太麻煩了,也沒有必要吧 可以把 token 儲存在 redis 等快取...
登入 退出功能 token原理分析
1 登入業務流程 1.在登入頁面輸入使用者名稱和密碼 2.呼叫後台介面進行驗證 3.通過驗證後,根據後台的響應狀態跳轉到專案主頁 2 登入業務的相關技術點 1.http是無狀態的 2.通過cookie在客戶端記錄狀態 建議非跨域請求時使用 3.通過session在伺服器端記錄 4.通過token方式...
畢設登入邏輯分析
1.後台 前台返回使用者名稱和密碼後 1 先進行一階段的判斷邏輯 使用者名稱和密碼的校驗 2 生成token,將tokenkey和去除密碼的使用者資訊存入快取資料庫中 這部分資料設定失效時間 3 在將token寫入cookie中以便實現單點登入 4 前台通過token去快取資料庫中獲取使用者資訊 5...