CN113946805A - 一种用户登录状态保持方法 - Google Patents

一种用户登录状态保持方法 Download PDF

Info

Publication number
CN113946805A
CN113946805A CN202111171496.5A CN202111171496A CN113946805A CN 113946805 A CN113946805 A CN 113946805A CN 202111171496 A CN202111171496 A CN 202111171496A CN 113946805 A CN113946805 A CN 113946805A
Authority
CN
China
Prior art keywords
token
refresh
access
user
header
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202111171496.5A
Other languages
English (en)
Inventor
于渊
胡清
李国涛
张栋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Inspur Cloud Information Technology Co Ltd
Original Assignee
Inspur Cloud Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Inspur Cloud Information Technology Co Ltd filed Critical Inspur Cloud Information Technology Co Ltd
Priority to CN202111171496.5A priority Critical patent/CN113946805A/zh
Publication of CN113946805A publication Critical patent/CN113946805A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/31User authentication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/45Structures or tools for the administration of authentication

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明涉及登录和访问控制领域,具体提供了一种用户登录状态保持方法,通过长短token与redis结合,实现用户一次登录,Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。与现有技术相比,本发明可以实现用户首次登陆后,在指定时间内有操作时就可以无感知的刷新Token,实现免登录,而在指定时间内没有任何操作时则需要重新登录,每次请求都会返回新的token而不是延长旧token的时间,防止token被非法获取后无限制的使用,兼顾了安全性与便利性。

Description

一种用户登录状态保持方法
技术领域
本发明涉及登录和访问控制领域,具体提供一种用户登录状态保持方法。
背景技术
随着单页面应用程序的流行,以及Web API和物联网的兴起,基于token的身份机制越来越被大家广泛采用。当讨论基于token的身份验证时,一般都是说的JSON Web Token(JWT)。虽然有着很多不同的方式实现token,但是JWT已经成为了事实上的标准。
基于token的验证是无状态的。服务器不记录哪些用户已登陆或者已经发布了哪些JWT。对服务器的每个请求都需要带上验证请求的token。该标记既可以加在header中,可以在POST请求的主体中发送,也可以作为查询参数发送。
Token一经生成,就具有时效性,一旦超过限定的时间则该token自动失效。这样做有利于防止不法分子获取到用户token后无限制的一直使用,从而降低风险。但是传统的单Token模式,当token过期后,需要用户再次登录以获取新的token,假如过期时间设置较长,则会增加token泄露的安全风险,假如设置的时间较短,就会出现用户需要频繁登录的情况,影响用户体验。
发明内容
本发明是针对上述现有技术的不足,提供一种实用性强的用户登录状态保持方法。
本发明解决其技术问题所采用的技术方案是:
一种用户登录状态保持方法,通过长短token与redis结合,实现用户一次登录,Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。
进一步的,所述长短token指access_token和refresh_token,用户在登录之后返回access_token和refresh_token,同时将refresh_token存入redis中。
进一步的,access_token和refresh_token均为JSON Web Token,JSON Web Token由三段信息构成,将这三段信息文本用链接在一起就构成了JSON Web Token字符串。
作为优选,所述三段信息分别为头部、载荷和签证,所述头部承载的信息为声明类型和声明加密的算法,所述荷载即为存放有效信息的地方,所述的有效信息包括标准中注册的声明、公共的声明和私有的声明,所述签证即为签证信息,所述签证信息包括:header、payload和secret。
进一步的,所述签证信息中所述的header和payload均使用base64加密后的header和payload;
base64加密后的header和base64加密后的payload使用连接组成的字符串,然后通过header中声明的加密方式进行加盐secret组合加密,然后就构成了JSON Web Token的签证部分。
进一步的,当access_token未过期时,则请求正常;
当access_token过期了,此时服务端会返回过期提示给到客户端,客户端收到过期提示后,使用refresh_token去获取新的access_token和refresh_token。
进一步的,在判断access_token已过期之后,再进行refresh_token是否过期的检查;
在验证refresh_token是否过期前,会先查询redis中是否存在该refresh_token,若不存在,则说明该token已被替换,应判定为失效需重新登录;
若存在,则验证其是否过期,若未过期,则生成新的access_token和refresh_token并返回,同时将redis中的token替换,从而实现了可将refresh_token手动置为失效的效果。
进一步的,当refresh_token也过期了,使用它去获取新access_token时服务端就会返回过期提示,那么此时就需要用户重新登录来获取新的access_token和refresh_token。
本发明的一种用户登录状态保持方法和现有技术相比,具有以下突出的有益效果:
与现有技术相比,本发明可以实现用户首次登陆后,在指定时间内有操作时就可以无感知的刷新Token,实现免登录,而在指定时间内没有任何操作时则需要重新登录,每次请求都会返回新的token而不是延长旧token的时间,防止token被非法获取后无限制的使用,兼顾了安全性与便利性。
本发明能够充分利用了JSON Web Token的优势,支持跨域访问、适用于移动应用、基于标准化等,其无状态的特性也由与redis结合的模式解决。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
附图1是一种用户登录状态保持方法的流程示意图。
具体实施方式
为了使本技术领域的人员更好的理解本发明的方案,下面结合具体的实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例都属于本发明保护的范围。
下面给出一个最佳实施例:
如图1所示,本实施例中的一种用户登录状态保持方法,通过长短token与redis结合,实现用户一次登录之后,在限定时间内再次访问相关地址不需要重复登陆,从而简化了用户的操作过程,提升认证速度,提升用户体验。Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。
Token的目的是为了减轻服务器的压力,减少频繁的查询数据库,使服务器更加健壮。本文采用通过长短token+redis的模式实现了用户登录应用后,在限定时间内无需登录就可再次访问应用,并自动延长限定时间,简化用户操作。
具体步骤为:
用户在登录之后返回access_token(短token)和refresh_token(长token),同时将refresh_token存入redis中。
使用的token均为JSON Web Token(JWT),JWT是由三段信息构成的,将这三段信息文本用链接在一起就构成了JWT字符串。
第一部分为头部(header),第二部分为载荷(payload,类似于飞机上承载的物品),第三部分是签证(signature)。
JWT的头部承载两部分信息:声明类型(这是JWT)、声明加密的算法(通常直接使用HMAC SHA256)。
载荷就是存放有效信息的地方,这些有效信息包含三个部分:标准中注册的声明、公共的声明和私有的声明。
签证部分是一个签证信息,这个签证信息由三部分组成:header(base64加密后的)、payload(base64加密后的)、secret。这个部分需要base64加密后的header和base64加密后的payload使用连接组成的字符串,然后通过header中声明的加密方式进行加盐secret组合加密,然后就构成了JWT的第三部分。
当access_token未过期时,则请求正常;当access_token过期了,此时服务端会返回过期提示给到客户端,客户端收到过期提示后,使用refresh_token去获取新的access_token和refresh_token。
在判断access_token已过期之后,再进行refresh_token是否过期的检查。
在验证refresh_token是否过期前,会先查询redis中是否存在该refresh_token,若不存在,则说明该token已被替换,应判定为失效需重新登录;
若存在,则验证其是否过期,若未过期,则生成新的access_token和refresh_token并返回,同时将redis中的token替换,从而实现了可将refresh_token手动置为失效的效果。
当refresh_token也过期了,使用它去获取新access_token时服务端就会返回过期提示,那么此时就需要用户重新登录来获取新的access_token和refresh_token。
通过以上步骤完成了使用长短token与redis相结合的方式来进行登陆验证的方法。因为每次使用access_token时,都会更新refresh_token,而refresh_token则是判定用户登录是否失效的条件,因此可以实现用户一次登录后,只要在限定时间内就可以免登录访问系统,并自动延长免登录时间的目的。
上述具体的实施方式仅是本发明具体的个案,本发明的专利保护范围包括但不限于上述具体的实施方式,任何符合本发明的一种用户登录状态保持方法权利要求书的且任何所述技术领域普通技术人员对其做出的适当变化或者替换,皆应落入本发明的专利保护范围。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。

Claims (8)

1.一种用户登录状态保持方法,其特征在于,通过长短token与redis结合,实现用户一次登录,Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。
2.根据权利要求1所述的一种用户登录状态保持方法,其特征在于,所述长短token指access_token和refresh_token,用户在登录之后返回access_token和refresh_token,同时将refresh_token存入redis中。
3.根据权利要求2所述的一种用户登录状态保持方法,其特征在于,access_token和refresh_token均为JSON Web Token,JSON Web Token由三段信息构成,将这三段信息文本用链接在一起就构成了JSON Web Token字符串。
4.根据权利要求3所述的一种用户登录状态保持方法,其特征在于,所述三段信息分别为头部、载荷和签证,所述头部承载的信息为声明类型和声明加密的算法,所述荷载即为存放有效信息的地方,所述的有效信息包括标准中注册的声明、公共的声明和私有的声明,所述签证即为签证信息,所述签证信息包括:header、payload和secret。
5.根据权利要求4所述的一种用户登录状态保持方法,其特征在于,所述签证信息中所述的header和payload均使用base64加密后的header和payload;
base64加密后的header和base64加密后的payload使用连接组成的字符串,然后通过header中声明的加密方式进行加盐secret组合加密,然后就构成了JSON Web Token的签证部分。
6.根据权利要求4所述的一种用户登录状态保持方法,其特征在于,当access_token未过期时,则请求正常;
当access_token过期了,此时服务端会返回过期提示给到客户端,客户端收到过期提示后,使用refresh_token去获取新的access_token和refresh_token。
7.根据权利要求4所述的一种用户登录状态保持方法,其特征在于,在判断access_token已过期之后,再进行refresh_token是否过期的检查;
在验证refresh_token是否过期前,会先查询redis中是否存在该refresh_token,若不存在,则说明该token已被替换,应判定为失效需重新登录;
若存在,则验证其是否过期,若未过期,则生成新的access_token和refresh_token并返回,同时将redis中的token替换,从而实现了可将refresh_token手动置为失效的效果。
8.根据权利要求4所述的一种用户登录状态保持方法,其特征在于,当refresh_token也过期了,使用它去获取新access_token时服务端就会返回过期提示,那么此时就需要用户重新登录来获取新的access_token和refresh_token。
CN202111171496.5A 2021-10-08 2021-10-08 一种用户登录状态保持方法 Pending CN113946805A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111171496.5A CN113946805A (zh) 2021-10-08 2021-10-08 一种用户登录状态保持方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111171496.5A CN113946805A (zh) 2021-10-08 2021-10-08 一种用户登录状态保持方法

Publications (1)

Publication Number Publication Date
CN113946805A true CN113946805A (zh) 2022-01-18

Family

ID=79329209

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111171496.5A Pending CN113946805A (zh) 2021-10-08 2021-10-08 一种用户登录状态保持方法

Country Status (1)

Country Link
CN (1) CN113946805A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114520744A (zh) * 2022-02-28 2022-05-20 佛山众陶联供应链服务有限公司 一种web系统前端自动鉴权和登录不刷新的方法及系统
CN116150037A (zh) * 2023-04-19 2023-05-23 云账户技术(天津)有限公司 一种在用例中管理用户登录状态的方法及装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114520744A (zh) * 2022-02-28 2022-05-20 佛山众陶联供应链服务有限公司 一种web系统前端自动鉴权和登录不刷新的方法及系统
CN116150037A (zh) * 2023-04-19 2023-05-23 云账户技术(天津)有限公司 一种在用例中管理用户登录状态的方法及装置

Similar Documents

Publication Publication Date Title
US11336634B2 (en) Identity management via a centralized identity management server device
US7240192B1 (en) Combining a browser cache and cookies to improve the security of token-based authentication protocols
CN104378376B (zh) 基于soa的单点登录方法、认证服务器和浏览器
US10778668B2 (en) HTTP session validation module
CN107948204B (zh) 一键登录方法及系统、相关设备以及计算机可读存储介质
US9300653B1 (en) Delivery of authentication information to a RESTful service using token validation scheme
US9191375B2 (en) System and method for accessing integrated applications in a single sign-on enabled enterprise solution
US7827318B2 (en) User enrollment in an e-community
US8332627B1 (en) Mutual authentication
CN107809317A (zh) 一种基于令牌数字签名的身份认证方法及系统
US20100115594A1 (en) Authentication of a server by a client to prevent fraudulent user interfaces
CN112468481B (zh) 一种基于CAS的单页和多页web应用身份集成认证方法
CN113946805A (zh) 一种用户登录状态保持方法
CN109495486B (zh) 一种基于JWT的单页Web应用集成CAS的方法
CN109639730A (zh) 基于令牌的http无状态协议下信息系统数据接口认证方法
CN102946384B (zh) 用户验证方法和设备
CN111953681B (zh) 一种dns身份认证方法及终端
CN103853950A (zh) 一种基于移动终端的认证方法及移动终端
US20180082287A1 (en) Cryptocurrency lock for online accounts
US11627135B2 (en) Method and system for delivering restricted-access resources using a content delivery network
US7757080B1 (en) User validation using cookies and isolated backup validation
CN105610855A (zh) 一种跨域系统登录验证的方法和装置
CN111614458A (zh) 网关jwt的生成方法、系统及存储介质
US10785213B2 (en) Continuous authentication
Balaj Token-based vs session-based authentication: A survey

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination