本篇文章给你们带来的内容是关于小程序和ThinkPHP5结合实现登陆状态(附代码),有必定的参考价值,有须要的朋友能够参考一下,但愿对你有所帮助。php
微信小程序中,通常会涉及三种登陆方式:
1. 使用微信帐号登陆
2. 自有的帐号注册和登陆
3. 使用其余第三方平台帐号登陆redis
1. 小程序经过wx.login获取code,发日后台,后台以此向微信API换取session_key和openid;
2. 随机生成字符串做为sessionid(key),session_key和openid做为value,存入redis中,为了安全,
存入的时候还应设置一个超时的时间;
3. 客户端将返回的sessionid存入storage,调用那些须要登陆后才有权限的访问的后台服务时,
你能够将保存在storage中的sessionid取出并携带在请求中,后台代码中获取到该sessionid后,
从redis中查找是否有该sessionid存在,存在的话,即确认该session是有效的,
继续后续的代码执行,不然进行错误处理。数据库
1. 进入小程序首先经过wx.login获取code,经过后台接口发日后台,后台以此向微信API换取session_key和openid;
2. 判断数据库中有无该openid【惟一标识,需和帐号(手机号)绑定】,
-- 若是数据库中没有该openid(说明没有该帐号):
判断传过来的手机号是否为空(登陆时会将手机号存到全局变量),若是不为空,则说明是刚登陆过的,而后绑定openid及openid_time(当前时间),
若是手机号也为空,说明没登陆过,则返回登陆失败信息,使客户端跳转登陆页;
-- 若是数据库中有该openid(说明数据库中有相对应的手机号),
判断openid_time距如今的时间是否大于4小时,若是大于,返回登陆失败信息,使客户端跳转登陆页;
若是小于,则更新openid_time为当前时间,而后返回登陆成功信息及手机号。
3. 登陆页面:判断数据库中该手机号是否存在,若是存在,则更新openid_time为当前时间,若是不存在,则添加该手机号用户。而后跳转首页执行wx.login方法,登陆成功,保持登录状态。json
1小程序 2微信小程序 3api 4安全 5微信 6markdown 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
date_default_timezone_set('PRC');
|