基于定时器的JWT自动续签认证方法及系统与流程

专利2023-11-08  104


基于定时器的jwt自动续签认证方法及系统
技术领域
1.本发明涉及jwt认证技术领域,具体地,涉及基于定时器的jwt自动续签认证方法及系统。


背景技术:

2.目前对于jwt自动续签来说,开发多采用把token存储与数据库或者redis中,这样偏向于session会话,失去了token的本质,并且会对服务器造成压力,如果是服务器集群,还会增加维护成本。
3.专利文献cn112260838b(申请号:202011103322.0)公开了一种基于jwt的自动续签认证方法,用数据库存储token记录,并且每次请求都需要比较对token进行解密,判断数据库中是否存在、多次对比签名是否一致、判断解密出的过期时间是否超时,距当前时间是否小于3分钟等等,逻辑过于复杂。并且把token存储于数据库中,有点像“重新发明session”。
4.专利文献cn110995702b(申请号:201911215713.9)公开了一种基于分布式微服务的用户认证方法、装置、服务端及可读存储介质,方案包括:利用api网关获取客户端侧发出的携带有jwt的业务请求;从jwt中提取token和用户标识信息,并判断本地是否记录有二者之间的映射关系;若是,则延迟该token的失效时间并利用api网关响应业务请求,否则拒绝业务请求。可见,该方案中所有业务请求通过api网关控制,使用户认证统一入口。在用户认证过程中,使用token和用户标识信息之间的映射关系记录jwt有效性,且利用token实现对jwt有效期的管理,提升用户认证方案的灵活性。


技术实现要素:

5.针对现有技术中的缺陷,本发明的目的是提供一种基于定时器的jwt自动续签认证方法及系统。
6.根据本发明提供的一种基于定时器的jwt自动续签认证方法,包括:
7.当用户登录成功时,存储后端返回token,跳转到内容页面,开启定时器;
8.当内容页面刷新时,存储后端返回token,开启定时器;
9.根据定时器触发执行函数,判断浏览器缓存中的renewal是否为true,当为true时,则调用refresh接口获取新的token,以更新浏览器本地缓存中的token,达到自动续签的目的;当为false时,则没有需要token验证接口请求,不做处理。
10.优选地,调用refresh接口根据浏览器缓存中存储的token解码出用户信息生成一个新的token返回给前端,前端将refresh接口返回的新的token存储在浏览器缓存中,并将浏览器缓存中的renewal的值设置为false。
11.优选地,前端在请求拦截器中判断当前请求的url是否需要token验证,浏览器缓存中的renewal是否为true,如果renewal的值是false或undefined且请求的url需要token验证,则在浏览器缓存中存储renewal值更改为true;否则不做处理。
12.优选地,当参数loginto为ture时,则当前用户登录成功,将后端返回的token存储到浏览器缓存中,跳转到内容页面,开启定时器;
13.当参数loginto为undefined时,则当前内容页面刷新,调用refresh接口,获取新的token,并将refresh接口返回的新的token存储到浏览器缓存中,开启定时器。
14.优选地,当用户退出登录时,则清除定时器以及浏览器缓存。
15.根据本发明提供的一种基于定时器的jwt自动续签认证系统,包括:
16.当用户登录成功时,存储后端返回token,跳转到内容页面,开启定时器;
17.当内容页面刷新时,存储后端返回token,开启定时器;
18.根据定时器触发执行函数,判断浏览器缓存中的renewal是否为true,当为true时,则调用refresh接口获取新的token,以更新浏览器本地缓存中的token,达到自动续签的目的;当为false时,则没有需要token验证接口请求,不做处理。
19.优选地,调用refresh接口根据浏览器缓存中存储的token解码出用户信息生成一个新的token返回给前端,前端将refresh接口返回的新的token存储在浏览器缓存中,并将浏览器缓存中的renewal的值设置为false。
20.优选地,前端在请求拦截器中判断当前请求的url是否需要token验证,浏览器缓存中的renewal是否为true,如果renewal的值是false或undefined且请求的url需要token验证,则在浏览器缓存中存储renewal值更改为true;否则不做处理。
21.优选地,当参数loginto为ture时,则当前用户登录成功,将后端返回的token存储到浏览器缓存中,跳转到内容页面,开启定时器;
22.当参数loginto为undefined时,则当前内容页面刷新,调用refresh接口,获取新的token,并将refresh接口返回的新的token存储到浏览器缓存中,开启定时器。
23.优选地,当用户退出登录时,则清除定时器以及浏览器缓存。
24.与现有技术相比,本发明具有如下的有益效果:
25.1、本发明通过采用定时器技术来实现jwt自动续签认证,如果用户在一个时间周期内操作应用,前端就会在token过期之前,帮用户自动续期,用户无任何感知;
26.2、本发明可有效解决传统jwt续签方案服务器压力大、内存占用率高、刷新令牌过期和不能过滤未过期失效jwt的问题;
27.3、本发明通过在token生成时开启定时器,在token过期前执行定时器中的函数,获取新的token,从而完成jwt自动续签;
28.4、本发明不需要服务端存储token、代码量少、操作简单,有效解决传统jwt续签方案的弊端。
附图说明
29.通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
30.图1为基于定时器的jwt自动续签认证方法流程图。
具体实施方式
31.下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术
人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
32.实施例1
33.本发明提供了一种基于定时器的jwt自动续签认证方法,如图1所示,包括:定时执行函数,判断是否需要调用接口获取新的token,以更新浏览器本地缓存中的token,达到自动续签的目的。本发明可有效解决传统jwt续签方案服务器压力大、内存占用率高、刷新令牌过期和不能过滤未过期失效jwt的问题。
34.具体地,包括:
35.步骤1:当用户登录成功时存储后端返回token,跳转到内容页面,开启定时器;
36.当内容页面刷新时,存储后端返回的token,开启定时器。
37.所述步骤1包括如下步骤:
38.步骤1.1:用户登录成功后,跳转到内容页面,通过路由传递(state或者query传参)参数loginto为true。把后端返回的token(时效为t1)存储到浏览器缓存中,开启定时器。
39.步骤1.2:当页面刷新时,此时定时器注销又重新开启,但是token还是之前登录返回的那个token,两者没有“同步”。因此,登录成功后传递的路由参数loginto是通过(state或者query)传递,刷新会丢失。此时取不到loginto参数,则调用refresh接口获取新的token,此时token和定时器已经保持“同步”。
40.在内容页面的组件中判断参数loginto为true,如果不是,则调用refresh接口,获取新的token;(当在内容页面刷新或者关闭标签页通过输入url进入内容页面时,会调用refresh接口获取新的token);存储后端返回token,开启定时器。
41.步骤2:前端在请求拦截器中判断该次请求的url是否需要token验证,浏览器缓存中的renewal是否为true。如果renewal的值是false或undefined且请求的url需要token验证,则在浏览器缓存中存储renewal值为true;否则不做处理。
42.步骤3:根据定时器触发执行函数。执行函数内容为,判断浏览器缓存中的renewal是否为true。如果是true,则调用refresh接口,后端根据之前的toekn解码出用户信息,生成一个新的token(时效为t1)返回给前端。前端把token存储在浏览器缓存中。此时把浏览器缓存中的renewal的值设置为false;如果是false,说明在这t2内没有需要token验证接口请求,不做处理。
43.步骤4:如果用户退出登录,则清除定时器、浏览器缓存等。
44.本发明提供了一种基于定时器的jwt自动续签认证系统,包括:
45.模块1:当用户登录成功时存储后端返回token,跳转到内容页面,开启定时器;
46.当内容页面刷新时,存储后端返回的token,开启定时器。
47.所述模块1包括如下模块:
48.模块1.1:用户登录成功后,跳转到内容页面,通过路由传递(state或者query传参)参数loginto为true。把后端返回的token(时效为t1)存储到浏览器缓存中,开启定时器。
49.模块1.2:当页面刷新时,此时定时器注销又重新开启,但是token还是之前登录返
回的那个token,两者没有“同步”。因此,登录成功后传递的路由参数loginto是通过(state或者query)传递,刷新会丢失。此时取不到loginto参数,则调用refresh接口获取新的token,此时token和定时器已经保持“同步”。
50.在内容页面的组件中判断参数loginto为true,如果不是,则调用refresh接口,获取新的token;(当在内容页面刷新或者关闭标签页通过输入url进入内容页面时,会调用refresh接口获取新的token);存储后端返回token,开启定时器。
51.模块2:前端在请求拦截器中判断该次请求的url是否需要token验证,浏览器缓存中的renewal是否为true。如果renewal的值是false或undefined且请求的url需要token验证,则在浏览器缓存中存储renewal值为true;否则不做处理。
52.模块3:根据定时器触发执行函数。执行函数内容为,判断浏览器缓存中的renewal是否为true。如果是true,则调用refresh接口,后端根据之前的toekn解码出用户信息,生成一个新的token(时效为t1)返回给前端。前端把token存储在浏览器缓存中。此时把浏览器缓存中的renewal的值设置为false;如果是false,说明在这t2内没有需要token验证接口请求,不做处理。
53.模块4:如果用户退出登录,则清除定时器、浏览器缓存等。
54.本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统、装置及其各个模块以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统、装置及其各个模块以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同程序。所以,本发明提供的系统、装置及其各个模块可以被认为是一种硬件部件,而对其内包括的用于实现各种程序的模块也可以视为硬件部件内的结构;也可以将用于实现各种功能的模块视为既可以是实现方法的软件程序又可以是硬件部件内的结构。
55.以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本技术的实施例和实施例中的特征可以任意相互组合。

技术特征:
1.一种基于定时器的jwt自动续签认证方法,其特征在于,包括:当用户登录成功时,存储后端返回token,跳转到内容页面,开启定时器;当内容页面刷新时,存储后端返回token,开启定时器;根据定时器触发执行函数,判断浏览器缓存中的renewal是否为true,当为true时,则调用refresh接口获取新的token,以更新浏览器本地缓存中的token,达到自动续签的目的;当为false时,则没有需要token验证接口请求,不做处理。2.根据权利要求1所述的基于定时器的jwt自动续签认证方法,其特征在于,调用refresh接口根据浏览器缓存中存储的token解码出用户信息生成一个新的token返回给前端,前端将refresh接口返回的新的token存储在浏览器缓存中,并将浏览器缓存中的renewal的值设置为false。3.根据权利要求1所述的基于定时器的jwt自动续签认证方法,其特征在于,前端在请求拦截器中判断当前请求的url是否需要token验证,浏览器缓存中的renewal是否为true,如果renewal的值是false或undefined且请求的url需要token验证,则在浏览器缓存中存储renewal值更改为true;否则不做处理。4.根据权利要求1所述的基于定时器的jwt自动续签认证方法,其特征在于,当参数loginto为ture时,则当前用户登录成功,将后端返回的token存储到浏览器缓存中,跳转到内容页面,开启定时器;当参数loginto为undefined时,则当前内容页面刷新,调用refresh接口,获取新的token,并将refresh接口返回的新的token存储到浏览器缓存中,开启定时器。5.根据权利要求1所述的基于定时器的jwt自动续签认证方法,其特征在于,当用户退出登录时,则清除定时器以及浏览器缓存。6.一种基于定时器的jwt自动续签认证系统,其特征在于,包括:当用户登录成功时,存储后端返回token,跳转到内容页面,开启定时器;当内容页面刷新时,存储后端返回token,开启定时器;根据定时器触发执行函数,判断浏览器缓存中的renewal是否为true,当为true时,则调用refresh接口获取新的token,以更新浏览器本地缓存中的token,达到自动续签的目的;当为false时,则没有需要token验证接口请求,不做处理。7.根据权利要求6所述的基于定时器的jwt自动续签认证系统,其特征在于,调用refresh接口根据浏览器缓存中存储的token解码出用户信息生成一个新的token返回给前端,前端将refresh接口返回的新的token存储在浏览器缓存中,并将浏览器缓存中的renewal的值设置为false。8.根据权利要求6所述的基于定时器的jwt自动续签认证系统,其特征在于,前端在请求拦截器中判断当前请求的url是否需要token验证,浏览器缓存中的renewal是否为true,如果renewal的值是false或undefined且请求的url需要token验证,则在浏览器缓存中存储renewal值更改为true;否则不做处理。9.根据权利要求6所述的基于定时器的jwt自动续签认证系统,其特征在于,当参数loginto为ture时,则当前用户登录成功,将后端返回的token存储到浏览器缓存中,跳转到内容页面,开启定时器;当参数loginto为undefined时,则当前内容页面刷新,调用refresh接口,获取新的
token,并将refresh接口返回的新的token存储到浏览器缓存中,开启定时器。10.根据权利要求6所述的基于定时器的jwt自动续签认证系统,其特征在于,当用户退出登录时,则清除定时器以及浏览器缓存。

技术总结
本发明提供了一种基于定时器的JWT自动续签认证方法及系统,包括:当用户登录成功时,存储后端返回token,跳转到内容页面,开启定时器;当内容页面刷新时,存储后端返回token,开启定时器;根据定时器触发执行函数,判断浏览器缓存中的renewal是否为true,当为true时,则调用refresh接口获取新的token,以更新浏览器本地缓存中的token,达到自动续签的目的;当为false时,则没有需要token验证接口请求,不做处理。处理。处理。


技术研发人员:孟刘
受保护的技术使用者:上海万向区块链股份公司
技术研发日:2022.07.06
技术公布日:2022/11/1
转载请注明原文地址: https://tieba.8miu.com/read-6242.html

最新回复(0)