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

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进行验证是否有效。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容