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註銷;

作者:不動峯

出處:http://www.jianshu.com/users/c0abc9c5f51e/latest_articles

博客園:http://www.cnblogs.com/mylly/

版權所有,歡迎保留原文鏈接進行轉載:)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章