当前位置: 首页 > 后端技术 > PHP

App和php后台接口登录认证、验证(seesion和token)

时间:2023-03-29 23:51:27 PHP

简述:随着电子商务的不断发展,APP也是分层的。随着技术的发展,主要的登录形式(微信、QQ、账号/密码);为此,我想和大家分享一下“app和php后台接口登录认证验证”的思路和实践;希望能帮助到迷茫的小伙伴们,有什么不对的或者好的建议,请告诉我;~!1、登录机制粗略分析:登录可分为三个阶段(登录验证、登录持久化、注销);登录验证是指客户端(或第三方平台(微信、qq)获取openid/unionid)提供的账号/密码向服务器发起登录请求,服务器响应请求判断是否登录可以登录并返回相应的数据;持续登录是指客户端登录后,服务器能够区分登录的客户端,并继续为其提供登录权限。注销是指客户端注销状态。解决方法,客户端登录成功后,服务器为其分配seesionId和token,客户端每次请求资源时都会带上sessionId和token验证,当sessionId失败时,带上token重新获取sessionId即可获取相应的资源;1.1登录状态sessionIdloginstatus是指客户端的登录状态(正在登录,未登录);简单登录流程如下:1、客户端第一次向服务器端发起登录请求(不传递用户名和密码)。2、服务器使用RSA算法生成一对公钥和私钥。并保留私钥,将公钥发送给客户端。3、客户端收到公钥后,对用户密码进行加密,向服务器发起第二次登录请求(发送用户名和加密后的密码)。4、服务器使用保留的私钥对密文进行解密,得到真实密码。登录成功后,服务器在session中分配一个Id,记录客户端的访问状态;1.2authenticationtokentoken是令牌,最大的特点是随机性和不可预测性;从上面的过程可以看出,单一的sessionId就可以判断用户的登录状态和身份,这是不可取的;为此,需要token进行身份验证;并且token存活时间要长于sessionId;因为一旦sessionId生效,可以使用token来维护登录状态;2、用户登录2.1登录验证App登录方式开头提到,主要三种:微信、QQ、账号/密码;第一次验证是通过数据匹配;匹配成功服务器返回唯一的sessionId和token,防止用户信息泄露;在此期间,建议token存活时间要长于sessionId;如果有效,可以通过token维护登录状态;2.2登录持久化sessionId记录客户端登录状态,保存在服务器session中;可以想象,当session过期后就失效了,可以通过token重新获取sessionId;保证登录状态的延续;2.3注销sessionId注销;作者:复多风博客园:http://www.cnblogs.com/mylly/版权所有,转载欢迎保留原文链接:)