關於token登入邏輯分析

2022-03-13 16:22:33 字數 1477 閱讀 1522

前言:

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

僅提供使用者名稱密碼登入的**進行參考

public

function 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...