1. 程式人生 > >app與php後臺介面登入認證、驗證(seesion和token)

app與php後臺介面登入認證、驗證(seesion和token)

簡要隨著電商的不斷髮展,APP也層次不窮,隨著科技的發展主要登入形式(微信、QQ、賬號/密碼);為此向大家分享一下"app與php後臺介面登入認證、驗證"想法和做法;希望能夠幫助困惑的夥伴們,如果有不對或者好的建議告知下;*~*!

一、登入機制

粗略分析:登入可分為三個階段(登入驗證、登入持續、退出登入);登入驗證指客戶端提供賬號/密碼(或第三方平臺(微信、qq)獲取openid/unionid)向伺服器提出登入請求,伺服器應答請求判斷能否登入並返回相應資料;登入持續指客戶端登入後, 伺服器能夠分辨出已登入的客戶端,併為其持續提供登入許可權的伺服器。退出登入指客戶端退出登入狀態。

方案,客戶端登入成功後, 伺服器為其分配seesionId和token, 客戶端每次請求資源時都帶上sessionId和token驗證,當sessionId失效帶上token重新獲取sessionId從而獲取相應資源;


1.1 登入狀態seesionId

登入狀態指,客戶端登入情況(登入中,未登入);簡單登入流程如下:

1 、客戶端向伺服器第一次發起登入請求(不傳輸使用者名稱和密碼)。

2、伺服器利用RSA演算法產生一對公鑰和私鑰。並保留私鑰, 將公鑰傳送給客戶端。

3、客戶端收到公鑰後, 加密使用者密碼, 向伺服器發起第二次登入請求(傳輸使用者名稱和加密後的密碼)。

4、伺服器利用保留的私鑰對密文進行解密,得到真正的密碼。

登入成功後,伺服器在session中分配一個Id記錄客戶端訪問狀態;

1.2 身份驗證token

token就是令牌,最大的特點就是隨機性,不可預測;從上面流程可知,單單一個sessionId判斷使用者的登入狀態及身份並不可取;為此需要token進行身份稽核;並且token存活時間應比sessionId長;因為sessionId一旦實效,就可以通過token來保持登入狀態;

二、使用者登入

2.1 登入驗證

app登入方式如開頭所說,主流三種:微信、QQ、賬號/密碼;首次驗證是通過資料的匹配;匹配成功伺服器返回唯一的sessionId和token,防止使用者資訊的洩露;期間,建議token存活時間應比sessionId長;因為sessionId一旦實效,就可以通過token來維持登入狀態;

2.2 登入持續

sessionId記錄著客戶端登入狀態,儲存在伺服器session中;可想而知當session過了存活期時就會失效,通過token重新獲取sessionId;保證登入狀態的延續;

2.3 退出登入

sessionId登出;