一般APP都是剛安裝后,第一次啟動時需要登錄(提示你需要登錄或者直接啟動在登錄界面)。而只要登錄成功后,以后每次啟動時都是登錄狀態,不需要每次啟動時再次登錄。不過,也有些APP若你長期未啟動,再次啟動時,它會提示你登錄過期,讓你重新登錄。這個是怎么實現的?APP是怎么保持登錄狀態的?
之所以突然寫這個話題,是因為昨晚無意間刷知乎刷到了這個問題iOS系統如何實現app登錄類似微信只需登錄一次,退出后不需要每次登錄?
回答里給出了好幾種解決方案,其中比較標准的方案是“帶時效檢測的token機制”。所謂token
,即“令牌”的意思。那這個token機制的執行邏輯是怎么樣的呢?
token機制
token機制的執行邏輯可以用下面一張圖展示清楚:
當用戶剛安裝完APP,並進行了注冊,擁有了賬號和密碼后。此時,則該進行首次登錄了:
APP將用戶輸入的賬號和密碼提交給服務器;
服務器對其進行校驗,若賬號和密碼對得上則校驗通過,說明登錄成功。並生成一個token
值,將其保存在數據庫,同時也返回給客戶端;
客戶端拿到返回的token
值后,可將其保存在本地。作為公共參數,即以后每次請求服務器時都攜帶該token
,提交給服務器,讓服務器校驗。
服務器接收到請求后,會取出請求頭里的token
值與數據庫存儲的token
進行對比校驗。若兩個token
值相同,則說明用戶登錄成功過,且當前正處於登錄狀態,此時正常返回數據,讓APP顯示數據。若兩個值不一致,則說明原來的的登錄已經失效,此時返回錯誤狀態碼,提示用戶跳轉至登錄界面重新登錄。用戶每進行一次登錄,登錄成功后服務器都會更新個
token
新值返回給客戶端。
結尾
總結,用token
機制完成登錄狀態保持/身份認證,生成怎樣的token
,怎么進行token
校驗都是服務器完成的。其實客戶端的工作很簡單,就是保存服務器給的token
,然后將其作為請求服務器的公共參數。