php 微信小程序登录 自定义登陆态,微信小程序用户信息存储及自定义登录态

1.小程序用户信息存储及自定义登录态

(参考 https://blog.csdn.net/weixin_43126083/article/details/105655402)

(1)小程序没有cookie,自定义登录态(伪cookie)来识别用户。

(2)不建议将敏感用户信息如openid,session_key等传到小程序客户端,无法保证数据安全。

2.用户登录问题

(1)wx.login获取code,wx.request发送code到自身服务器

调取wx.login接口获取登录凭证code,通过wx.request发送code,与自家服务器后台交互,后台调用auth.code2Session接口获取用户登录态信息,包括用户唯一标识openid以及本次登录的会话密钥session_key。

其中auth.code2Session的调用前端也可完成,参考https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/login/auth.code2Session.html

示例代码

wx.login({

success(res){

if(res.code){

//发起网络请求

wx.request({

url:'https://test.com/onLogin',

data:{

code:res.code

}

})

}else{

console.log('登录失败!'+res.errMsg)

}

}

})

(2)自身服务器根据code,appid,secret发送给微信服务器,获取session_key和openid

(3)自身服务器生成3rd_session

3rd_session用于第三方服务器和小程序之间做登录态校验。

(4)自身服务器以3rd_session为key,session_key+openid为value,写入session存储。(redis,memcached之类的存储)

(5)小程序客户端将3rd_session id写入storage

后续用户进入小程序,先从storage读取3rd_session id,再调用wx.resquest的时候发送至服务器,服务器根据3rd_session 查找合法的session_key和openid

3.cookie

网站为了辨别用户身份,进行session跟踪而存储在用户本地终端上的数据。

cookie有效期:

(1)会话cookie:存储于浏览器进程,当浏览器关闭时,会话cookie就不存在了。

(2)存在硬盘的cookie:不会随浏览器的关闭而失效,根据设置的失效时间而过期。

cookie机制和session机制的区别:

(1)cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案。session更安全。

4.session

会话,一类用来在客户端与服务器端之间保持状态的解决方案。

session机制是一种服务器端的机制,服务器使用一种散列表的结构来保存信息。当程序需要为某个客户端的请求创建一个session的时候,服务器会首先检查这个客户端的请求里是否包含了一个session标识--成为session id。

如果已经包含一个session id则说明以前已经为此客户创建过session,服务器就会按照session id把这个session检索出来使用;如果客户请求里不包含session id,则为此客户创建一个session并且生成一个与此session相关联的session id,这个session id将在本次响应中国年返回给客户端保存。这个session id会保存在浏览器(客户端)的会话cookie中。

session存放于服务器的内存中,可以通过特殊的方式做持久化管理(memcache,redis)。

注:

(1)客户端只保存在session id到cookie中,而不会保存session。

(2)关闭浏览器只会使存储在客户端浏览器内存中的session cookie失效,不会使服务器端的session对象失效,也会使保存到硬盘上的持久化cookie消失。

5.sessionID

客户端发送请求时,服务器会生成一个session对象,session对象生成一个对应的sessionID返回给客户端,客户端再次请求时会在cookie中携带该sessionID随请求一起发送给服务器,服务器对sessionID进行验证是否有效。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值