简要:随着电商的不断发展,APP也层次不穷,随着科技的发展主要登陆形式(微信、QQ、帐号/密码);为此向你们分享一下"app与php后台接口登陆认证、验证"想法和作法;但愿可以帮助困惑的伙伴们,若是有不对或者好的建议告知下; ~!
粗略分析:登陆可分为三个阶段(登陆验证、登陆持续、退出登陆);登陆验证指客户端提供帐号/密码(或第三方平台(微信、qq)获取openid/unionid)向服务器提出登陆请求,服务器应答请求判断可否登陆并返回相应数据;登陆持续指客户端登陆后, 服务器可以分辨出已登陆的客户端,并为其持续提供登陆权限的服务器。退出登陆指客户端退出登陆状态。php
方案,客户端登陆成功后, 服务器为其分配seesionId和token, 客户端每次请求资源时都带上sessionId和token验证,当sessionId失效带上token从新获取sessionId从而获取相应资源;
登陆状态指,客户端登陆状况(登陆中,未登陆);简单登陆流程以下:算法
1 、客户端向服务器第一次发起登陆请求(不传输用户名和密码)。服务器
二、服务器利用RSA算法产生一对公钥和私钥。并保留私钥, 将公钥发送给客户端。微信
三、客户端收到公钥后, 加密用户密码, 向服务器发起第二次登陆请求(传输用户名和加密后的密码)。session
四、服务器利用保留的私钥对密文进行解密,获得真正的密码。app
登陆成功后,服务器在session中分配一个Id记录客户端访问状态;加密
token就是令牌,最大的特色就是随机性,不可预测;从上面流程可知,单单一个sessionId判断用户的登陆状态及身份并不可取;为此须要token进行身份审核;而且token存活时间应比sessionId长;由于sessionId一旦实效,就能够经过token来保持登陆状态;blog
app登陆方式如开头所说,主流三种:微信、QQ、帐号/密码;首次验证是经过数据的匹配;匹配成功服务器返回惟一的sessionId和token,防止用户信息的泄露;期间,建议token存活时间应比sessionId长;由于sessionId一旦实效,就能够经过token来维持登陆状态;token
sessionId记录着客户端登陆状态,保存在服务器session中;可想而知当session过了存活期时就会失效,经过token从新获取sessionId;保证登陆状态的延续;接口
sessionId注销;
做者:不动峰
博客园: http://www.cnblogs.com/mylly/ 版权全部,欢迎保留原文连接进行转载:)