微信小程序(十八)小程序维护登录态

简介: 现阶段小程序系列的最后一篇。我们来看下小程序十如何维护登录态的,这个玩意,早应该说了,但是,直到我小程序做成现在这个状态,我也没有用到微信官方所说的使用sessionkey维护的登录态,所以,这个最后来看一下。

现阶段小程序系列的最后一篇。

我们来看下小程序十如何维护登录态的,这个玩意,早应该说了,但是,直到我小程序做成现在这个状态,我也没有用到微信官方所说的使用sessionkey维护的登录态,所以,这个最后来看一下。

一:何为登录态?

所谓登录态,就是程序在运行时,能够识别当前用户,能够证明自己的唯一性且合法。

我们知道,WEB服务器通过浏览器携带的cookie获取session来判断是否是同一用户(或浏览器);Restful服务通过客户端传过来唯一ID,来识别调用用户。

放一张从网上下载的图片:

image.png

二:使用sessionkey来维护登录态

小程序用户身份的标识可以使用openid,如果是多平台的可以使用unionid,这两个字段对于一个小程序和用户而言是固定不变的,基本上是获取一次与业务系统的用户ID建立对应关系,然后就完事大吉了。

在实际使用中用到SessionKey的场景不多。比如用户信息openid和unionid获取、用户手机号的获取。前者是wx.login()中通过code就能获取到,用SessionKey来解密的场景基本上就很少了。

但是要是获取用户手机号的时候就要使用有效的SessionKey。要注意了是“有效”,虽然在获取SessionKey的时候有个过期时间,所以在使用sessionkey之前需要使用wx.checkSession() 来检查sessionkey是否过期,过期再次调用wx.login进行登录,但是在很多场景下经常会出现超时或已经过期的情况。

比如常见的一种情况是用户信息解密、手机号解密有时可以正常解密,有时候就不行。这时候基本上的问题就是解密用的SessionKey和与加密用的SessionKey不是同一个了。

三: sessionkey的管理思路:

调用wx.login()获取code,服务端根据这个code和appid和appsecret获取SessionKey。

把SessionKey保存到服务器上,一般是不在网络传输,建立自己的SesstionID和生成的SessionKey的对应关系。然后把生成的SessionID传输到小程序客户端,在小程序本地缓存。

在需要使用SessionKey的场景时先使用wx.checkSession()判定一下有没有过期,如果没有过期就把本地的SessionID传输到服务端,服务端根据SessionID查询对应的SessionKey,进行后继的业务操作。

如果本地判定已经过期,那就先wx.login()重新生一次。

有好的建议,请在下方输入你的评论。

欢迎访问个人博客:guanchao.site

欢迎访问我的小程序:打开微信->发现->小程序->搜索“时间里的”

目录
相关文章
|
11天前
|
小程序
【微信小程序-原生开发】实用教程12 - 注册页(含获取用户微信昵称,原生form的表单提交,t-result 的使用)
【微信小程序-原生开发】实用教程12 - 注册页(含获取用户微信昵称,原生form的表单提交,t-result 的使用)
13 0
|
11天前
|
小程序 数据库
【微信小程序-原生开发】实用教程10 - 动态的新增、修改、删除(含微信云数据库的新增、修改、删除,表单弹窗、确认弹窗、日期选择器、单行输入框、多行输入框、滑动组件的使用)
【微信小程序-原生开发】实用教程10 - 动态的新增、修改、删除(含微信云数据库的新增、修改、删除,表单弹窗、确认弹窗、日期选择器、单行输入框、多行输入框、滑动组件的使用)
13 0
|
11天前
|
小程序 API 数据库
【微信小程序-原生开发】实用教程09 - 可滚动选项,动态列表-步骤条(含事件传参),动态详情(含微信云查询单条数据 doc)
【微信小程序-原生开发】实用教程09 - 可滚动选项,动态列表-步骤条(含事件传参),动态详情(含微信云查询单条数据 doc)
11 0
|
8天前
|
小程序 前端开发
微信综合购物商城小程序ui模板源码
微信电商小程序前端页面,综合购物商城ui界面模板。主要功能包含:电商主页、商品分类、购物车、购物车结算、我的个人中心管理、礼券、签到、新人专享、专栏、商品详情页、我的订单、我的余额、我的积分、我的收藏、我的地址、我的礼券等。这是一款非常齐全的电商小程序前端模板。
22 4
|
4天前
|
小程序 开发者
【微信小程序】 微信小程序报错不在以下request合法域名列表中
【微信小程序】 微信小程序报错不在以下request合法域名列表中
10 0
|
4天前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的微信智能招聘小程序的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的微信智能招聘小程序的详细设计和实现(源码+lw+部署文档+讲解等)
|
4天前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的微信社团小程序的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的微信社团小程序的详细设计和实现(源码+lw+部署文档+讲解等)
|
11天前
|
前端开发 小程序
【微信小程序-原生开发】实用教程20 - 生成海报(实战范例为生成活动海报,内含生成指定页面的小程序二维码,保存图片到手机,canvas 系列教程)
【微信小程序-原生开发】实用教程20 - 生成海报(实战范例为生成活动海报,内含生成指定页面的小程序二维码,保存图片到手机,canvas 系列教程)
18 0
|
11天前
|
JSON 小程序 JavaScript
【微信小程序-原生开发】TDesign 实战模板——账号密码登录页(含密码显示隐藏的技巧)
【微信小程序-原生开发】TDesign 实战模板——账号密码登录页(含密码显示隐藏的技巧)
19 0
|
11天前
|
存储 小程序 数据库
【微信小程序-原生开发】实用教程08 - 开通微信云开发,操作云数据库新增数据(含修改数据权限),初始化云服务(含获取微信云环境 id),获取云数据,滚动公告栏
【微信小程序-原生开发】实用教程08 - 开通微信云开发,操作云数据库新增数据(含修改数据权限),初始化云服务(含获取微信云环境 id),获取云数据,滚动公告栏
11 0