一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于微信小程序实现单点登录的方法和系统与流程

2022-11-09 23:03:16 来源:中国专利 TAG:


1.本发明属于计算机技术领域,尤其涉及一种基于微信小程序实现单点登录的方法和系统。


背景技术:

2.记录小程序登录信息的主要技术是jwt。一般情况下,用户登录之后会生成一个带有过期时间的一个token字符串。当用户重新进入小程序时,小程序会读取这一字符串,并携带在接口的请求头上。
3.为避免用户需要频繁的登录,需要延迟token的过期时间。因为用户可以随意修改客户端的时间,所以token中存储的时间信息是服务器的时间,这样就不会因为用户的误操作而导致重新登录了。另外,同一个用户在用不同设备登录时会重新刷新token,因此,可以确保多个设备之间有且只有一个相同的用户,这就避免了账号泄漏其他人登录之后对数据的误操作,在用户层面保证了数据的安全性。
4.对于用户体验来说,系统的反应速度是一个比较大的指标,所以采用了redis而不是mongodb来存储token。redis相比mongodb来说,最大的优点就是查询快。因为redis是完全基于内存的,而mongodb是一个基于分布式文件存储的数据库,更加适用于存储拥有较复杂数据结构的数据。
5.专利文献cn201811464577.2公开了一种基于微信号实现微信小程序安全登录的方法,其所描述的技术方案在登录成功之后,在后续使用该应用时,没有更新token的时间信息,如果token过期之后,用户再重新使用还是会需要去重新登录,用户体验不佳。


技术实现要素:

6.本发明的主要目的在于克服现有技术的缺点与不足,提供一种基于微信小程序实现单点登录的方法和系统,通过在token合法的情况下刷新token,避免了token刷新不及时,既能实现单点登录又能有效提升用户体验。
7.根据本发明的一个方面,本发明提供了一种基于微信小程序实现单点登录的方法,所述方法包括:打开小程序,检测是否存在令牌token;若存在令牌token,判断所述令牌token是否合法;当所述令牌token合法时,刷新所述令牌token,重新生成一个token值,同时设置所述token值的有效时间,并存储在数据库中。
8.优选地,所述方法包括:当所述令牌token不合法时,获取小程序的位置授权,并检查隐私协议,进行登录认证。
9.优选地,所述判断所述令牌token是否合法包括:对所述小程序调用应用程序接口的请求进行动态配置,获取针对所述请求的响应
消息中的状态值,根据所述状态值判断所述令牌token是否合法。
10.优选地,所述判断所述令牌token是否合法包括:查询存储所述token值的数据库,将当前令牌token的token值与所述数据库中存储的token值进行比较,查看字符串值是否相等,同时判断所述token值的时间是否过期,如果所述字符串值相等且没过期,则确定所述令牌token是合法的,否则是不合法的。
11.优选地,所述获取小程序的位置授权包括:在判断所述令牌token失效后,申请获取小程序的位置授权,并提示用户进行位置授权;若用户拒绝授权,则弹窗提示用户更改授权,在用户同意的情况下打开授权设置,重新设置位置授权。
12.根据本发明的另一个方面,本发明还提供一种基于微信小程序实现单点登录的系统,所述系统包括:检测模块,用于打开小程序,检测是否存在令牌token;判断模块,用于若存在令牌token,判断所述令牌token是否合法;刷新模块,用于当所述令牌token合法时,刷新所述令牌token,重新生成一个token值,同时设置所述token值的有效时间,并存储在数据库中。
13.优选地,所述系统还包括登录模块,所述登录模块用于:当所述令牌token不合法时,获取小程序的位置授权,并检查隐私协议,进行登录认证。
14.优选地,所述判断模块判断所述令牌token是否合法包括:对所述小程序调用应用程序接口的请求进行动态配置,获取针对所述请求的响应消息中的状态值,根据所述状态值判断所述令牌token是否合法。
15.优选地,所述判断模块判断所述令牌token是否合法包括:查询存储所述token值的数据库,将当前令牌token的token值与所述数据库中存储的token值进行比较,查看字符串值是否相等,同时判断所述token值的时间是否过期,如果所述字符串值相等且没过期,则确定所述令牌token是合法的,否则是不合法的。
16.优选地,所述登录模块获取小程序的位置授权包括:在判断所述令牌token失效后,申请获取小程序的位置授权,并提示用户进行位置授权;若用户拒绝授权,则弹窗提示用户更改授权,在用户同意的情况下打开授权设置,重新设置位置授权。
17.有益效果:本发明通过检测是否存在令牌token,在存在令牌token的情况下判断所述令牌token是否合法,当所述令牌token合法时,刷新所述令牌token,重新生成一个token值,同时设置所述token值的有效时间,并存储在数据库中,避免了token刷新不及时,既能实现单点登录又能有效提升用户体验。
18.通过参照以下附图及对本发明的具体实施方式的详细描述,本发明的特征及优点将会变得清楚。
附图说明
19.图1是本发明的基于微信小程序实现单点登录的方法流程图;图2是本发明的基于微信小程序实现单点登录的系统结构示意图。
具体实施方式
[0020] 下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0021]
实施例1图1是本发明的基于微信小程序实现单点登录的方法流程图。如图1所示,本发明提供了一种基于微信小程序实现单点登录的方法,所述方法包括:s1:打开小程序,检测是否存在令牌token。
[0022]
具体地,可以从小程序的本地缓存中获取令牌token,如果有的话根据token查询数据,校验token合法性。
[0023]
s2:若存在令牌token,判断所述令牌token是否合法。
[0024]
优选地,所述判断所述令牌token是否合法包括:查询存储所述token值的数据库,将当前令牌token的token值与所述数据库中存储的token值进行比较,查看字符串值是否相等,同时判断所述token值的时间是否过期,如果所述字符串值相等且没过期,则确定所述令牌token是合法的,否则是不合法的。
[0025]
上述数据库可以是mongodb数据库。
[0026]
优选地,所述判断所述令牌token是否合法包括:对所述小程序调用应用程序接口的请求进行动态配置,获取针对所述请求的响应消息中的状态值,根据所述状态值判断所述令牌token是否合法。
[0027]
具体地,小程序调取后端接口需要使用微信提供的统一api:wx.request,所以在此基础上,对这一api实现了请求拦截以及动态配置,在接口返回中做了状态判断,如果是token问题则直接拦截掉并跳转首页。还做了最常用的默认参数,使得开发者能够用最小的代价很熟练的使用起来。
[0028]
本步骤中,对所有的请求做了一个统一封装。因为所有的请求都有一个状态值来判断是否成功,如200表示请求成功,500表示服务端出错,401表示token不合法(这里的不合法认为是值不对或者时间已经过期)。所以这里对请求的状态进行一个判断,如果是200的话则认为这个请求是正常的,如果是500的话需要弹窗提示后端的报错信息,那么如果是401(通常认为是401,后端可以配置,像服务站小程序中用的就是401,线上订单小程序用的是40001)的话,就认为这个请求携带的token是不合法的,就会认为这个token有问题,需要重新登录。
[0029]
s3:当所述令牌token合法时,刷新所述令牌token,重新生成一个token值,同时设置所述token值的有效时间,并存储在数据库中。
[0030]
具体地,如果判断token是合法的,那么重新生成一个token值,同时设置这个token的有效时间,存储在mongodb数据库中,此时认为是刷新了一遍token。
[0031]
刷新token需要调用服务端提供的接口,像服务站小程序的接口就是/login/getcreatetimeandwxstatus,也可以是企业内部的接口。
[0032]
打开小程序之后,后面断时间内再次重复打开,当前页面的数据会被缓存下来,不会重新请求接口,也就不会去重新校验token,所以针对这种情况,在小程序首页的onshow
生命周期之内,执行刷新token的方法,以确保每次进入都会重新执行。
[0033]
优选地,所述方法包括:s4:当所述令牌token不合法时,获取小程序的位置授权,并检查隐私协议,进行登录认证。
[0034]
优选地,所述获取小程序的位置授权包括:在判断所述令牌token失效后,申请获取小程序的位置授权,并提示用户进行位置授权;若用户拒绝授权,则弹窗提示用户更改授权,在用户同意的情况下打开授权设置,重新设置位置授权。
[0035]
具体地,在判断token失效后,会申请获取小程序的位置授权,并提示用户位置授权的作用,为了提升用户体验,用户在拒绝授权之后,会弹窗提示用户更改授权,同意则直接打开授权设置,重新设置位置授权,否则直接进行下一步。
[0036]
现版本微信小程序都会需要同意隐私协议,本步骤中在登录的时候会去校验有没有选中隐私协议,选中则执行下一步,没有选中则直接提示勾选。
[0037]
进行登录认证时,可以通过两种方式实现:微信授权登录以及手机号验证码登录。
[0038]
如果是微信授权登录的话,需要使用微信官方提供的button组件,并配置bindgetphonenumber和open-type=”getphonenumber”属性,点击按钮之后会获取到登录相关的code、cloudid、encrypteddata、iv加密相关的数据,这些数据发送至服务端之后,服务端调用微信提供的api查询到真实的手机号返还给前端即登录成功。
[0039]
如果是手机号验证码登录,则直接输入手机号之后,校验手机号格式是否正确,如果不正确则弹出提示,之后点击获取验证码按钮得到一个有效时间为5分钟的6位数字验证码,填写之后点击登录即登录成功。
[0040]
收到token之后,登录流程就结束了,可以继续执行注册和审核的流程(如果有的话),也可以进行一些符合企业系统业务需求的其他操作。
[0041]
本实施例通过刷新token,延长了token的过期时间,仅用了较小时间和空间消耗就避免了token刷新不及时的问题,既能实现单点登录又能有效提升用户体验。又由于对wx.request做了二次封装,一些最常用的参数都是默认的,这解决了每次调用接口都需要多次编写重复代码的问题,而这种修改对于用户来说是无感的,操作简单。
[0042]
实施例2图2是本发明的基于微信小程序实现单点登录的系统结构示意图。如图2所示,本发明还提供了一种基于微信小程序实现单点登录的系统,所述系统包括:检测模块201,用于打开小程序,检测是否存在令牌token;判断模块202,用于若存在令牌token,判断所述令牌token是否合法;刷新模块203,用于当所述令牌token合法时,刷新所述令牌token,重新生成一个token值,同时设置所述token值的有效时间,并存储在数据库中。
[0043]
优选地,所述系统还包括登录模块204,所述登录模块204用于:当所述令牌token不合法时,获取小程序的位置授权,并检查隐私协议,进行登录认证。
[0044]
优选地,所述判断模块202判断所述令牌token是否合法包括:对所述小程序调用应用程序接口的请求进行动态配置,获取针对所述请求的响应
消息中的状态值,根据所述状态值判断所述令牌token是否合法。
[0045]
优选地,所述判断模块202判断所述令牌token是否合法包括:查询存储所述token值的数据库,将当前令牌token的token值与所述数据库中存储的token值进行比较,查看字符串值是否相等,同时判断所述token值的时间是否过期,如果所述字符串值相等且没过期,则确定所述令牌token是合法的,否则是不合法的。
[0046]
优选地,所述登录模块204获取小程序的位置授权包括:在判断所述令牌token失效后,申请获取小程序的位置授权,并提示用户进行位置授权;若用户拒绝授权,则弹窗提示用户更改授权,在用户同意的情况下打开授权设置,重新设置位置授权。
[0047]
本实施例2中各个模块所执行的方法步骤的具体实施过程与实施例1中的各个步骤的实施过程相同,在此不再赘述。
[0048]
以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是在本发明的构思下,利用本发明说明书及附图内容所作的等效结构变换,或直接/间接运用在其他相关的技术领域均包括在本发明的专利保护范围内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献