CN112968862A - 一种基于redis的单点登录方法与装置 - Google Patents
一种基于redis的单点登录方法与装置 Download PDFInfo
- Publication number
- CN112968862A CN112968862A CN202011624182.1A CN202011624182A CN112968862A CN 112968862 A CN112968862 A CN 112968862A CN 202011624182 A CN202011624182 A CN 202011624182A CN 112968862 A CN112968862 A CN 112968862A
- Authority
- CN
- China
- Prior art keywords
- user
- login
- redis
- information
- key
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/0815—Network architectures or network communication protocols for network security for authentication of entities providing single-sign-on or federations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/31—User authentication
- G06F21/41—User authentication where a single sign-on provides access to a plurality of computers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/45—Structures or tools for the administration of authentication
- G06F21/46—Structures or tools for the administration of authentication by designing passwords or checking the strength of passwords
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Transfer Between Computers (AREA)
Abstract
一种基于Redis缓存实现防止重复登录的方法,将用户信息的userid作为Redis的key、将用户登录信息的token经过业务处理后作为value即关键值、缓存在Redis中,并设置失效时间,同一用户在多次登录时、只保留最后一次登录的用户登录信息;用户在在多个设备上访问同一个网站,或者在同一个设备上打开多个窗口去访问不同的网站或相同的网站时,运行验证程序时,通过验证当前用户登录信息和缓存中的用户登录信息是否一致判断该用户是否是合法登录状态,防止重复登录。
Description
技术领域:
本发明涉及计算机网络技术、尤其是基于Redis缓存技术的应用。
背景技术:
在当今时代,设备越来越智能化及多样化,人们可以同时在多个设备上访问同一个网站,或者在同一个设备上打开多个窗口去访问不同的网站或相同的网站。同时,企业在开发应用时也会满足多种设备使用,因此,从使用安全方面考虑需要防止重复登录。基于以上的描述,Redis缓存利用其读写速度快、基于键值对的数据结构等特性,可以成为企业服务实现防止重复登录的方法。
CN201910964152一种基于Redis对用户APP登录设备数量控制的方法,通过将从数据库进行设备信息的存储和调用更改为从Redis中进行设备信息的存储和调用,大大提高了系统的运行速度,减少了开发成本,提高了系统稳定性,能够有效的对用户APP登录设备数量控制,解决了现有登录设备数量控制的方法中需要反复从数据库中调用数据,频繁读取写入数据库,会大幅度降低系统速度,分布式事务处理技术成本很高,访问量过高后容易产生脏数据,影响用户使用APP,因此无法有效的对用户 APP登录设备数量进行控制的问题。
发明内容:
本发明目的是,提出一种基于Redis缓存实现防止重复登录的方法,满足同时在多个设备上访问同一个网站,或者在同一个设备上打开多个窗口去访问不同的网站或相同的网站。提出一种企业服务器实现防止重复登录的方法。
本发明的技术方案是,一种基于Redis缓存实现防止重复登录的方法,一种基于Redis缓存实现防止重复登录的方法,其特征是,将用户信息的userid作为Redis 的key、将用户登录信息的token经过业务处理后作为value即关键值、缓存在Redis 中,并设置失效时间,同一用户在多次登录时、只保留最后一次登录的用户登录信息;用户在在多个设备上访问同一个网站,或者在同一个设备上打开多个窗口去访问不同的网站或相同的网站时,运行验证程序时,通过验证当前用户登录信息和缓存中的用户登录信息是否一致判断该用户是否是合法登录状态,防止重复登录。
进一步的,用户执行步骤的执行前置条件:
1)Redis部署完成;2)服务端完成Redis配置信息;3)Redis存储的数据结构已确定;
执行步骤:用户访问Redis数据库服务器,执行登录操作;校验用户信息:校验Redis中该用户key是否存在?如果存在,按用户输入验证信息并更新用户信息;如果不存在,存入用户信息;验证该用户的登录信息是否已存在,然后将用户的登录信息存入Redis。
验证方式:A.通过调用RedisTemplate.opsForValue().get(Object o).toString()方法,将用户的userId作为入库的参数,获取返回结果;
B.如果获取的结果为空,认为之前没有登录,通过调用RedisTemplate.opsForValue().set(String k,Object v)方法,将本次登录信息的userId作为key,将业务处理后的token作为value,存入Redis中,调用 RedisTemplate.expire(String k,longtimeout,TimeUnit unit)方法,设置Redis 中key=userId的记录的失效时间,并完成登录;
C.如果获取结果不为空,则认为之前已登录,并且还没有退出登录,通过调用RedisTemplate.delete(String key)方法,将用户的userId作为入库参数,删除 Redis中key=userId的记录,再调用RedisTemplate.opsForValue().set(String k, Object v)方法,重新存入本次的登录信息,并完成登录;
用户登录信息的token经过业务处理后作为关键值(value)的生成方式:Token 令牌+当前登录时的时间戳,经过MD5加密后生成的MD5码。
用户访问需要具备登录条件的接口:通过用户信息,调用RedisTemplate.opsForValue().get(Object o).toString()方法,查询Redis中用该userId作为key 的值是否存在;
如不存在则抛出异常,不允许用户访问,前端跳到登录页面;如存在则通过String类的equals方法验证当前持有的登录信息和Redis中存的登录信息是否不一致,如一致,则可以访问;不一致,则抛出异常,不允许用户访问,前端跳到登录页面。
有益效果:Redis缓存是解决系统业务防止重复登录的一种切实可行的方法,,可操作性强,很方便维护所有在线用户的信息。是通过sql查询数据库,验证当前登录的用户名在数据库中是否存在,并验证数据库中的用户信息和当前登录的用户信息是否一致来确定是否可以执行登录操作;验证通过后,保证同一个用户信息在多次/ 多地登录时、只将最后一次登录时的用户信息作为有效信息,保存到Redis缓存中;并给这条记录设置一个合适的失效时间,防止用户非正常退出应用或长时间不退出应用时,导致用户的信息资产的不安全。应用程序在运行过程中通过验证当前登录的用户信息和保存在Redis缓存中的用户登录信息是否一致,来判断当前用户是否是登录状态,实现防止用户重复登录。本发明方法效率高,使用方便。
附图说明:
图1为本发明的流程框图。
图2架构整体特性。
图3校验该用户的登录信息。
图4验证方式流程图。
图5实现方式流程。
具体实施方式:
A.执行前置条件
1.单节点部署Redis,并配置好Redis配置信息;
2.已确定存储在Redis缓存中的数据结构;
图2架构整体特性中,
Redis是一个开源(BSD许可)的,使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库。它支持多种类型的数据结构,如字符串 (strings),散列(hashes),列表(lists),集合(sets),有序集合(sorted sets)等。 Redis内置了不同级别的磁盘持久化,并通过Redis哨兵和自动分区提供高可用性。其特性就是内存数据库,性能高,读写速度快,所有操作都是原子性的,可以持久化到磁盘中。基于Redis字符串(strings)类型的数据结构,可以实现系统数据存储服务。
架构简单,只需要一个Redis实列。
数据存储方法:用户数据存储的关键点,在于数据结构中key的唯一性,即同一个用户信息只有一个唯一的key;通过value的不一样来体现出是同一用户不同次的登录操作。
B.数据验证顺序
1,Sql查询数据库验证当前登录的用户信息是否有效
2,验证当前登录的用户信息是否已存在Redis缓存中
软件部署设计,单节点服务器部署。
C.框架执行步骤
1.用户访问应用程序的登录页,输入用户相关信息,执行登录操作;
·校验该用户的登录信息
用户在页面输入用户名,密码信息,提交表单,调用后台登录接口,通过sql 语句查询数据库中当前输入的用户名是否存在,如果存在,将数据库中获取的用户信息的密码字段和当前加密处理后的密码信息验证是否一致,不一致则登录失败,一致则进行后续的校验。
如图3:
2.验证Redis缓存中该用户的登录信息是否已存在,然后将用户的登录信息存入Redis缓存中;
·验证方式:
A.校验用户信息通过后,会获得一份用户相关信息;
B.再将Token令牌+当前登录时的时间戳拼接成一个新的字符串,经过MD5 方式加密后生成MD5码;
C.通过调用RedisTemplate.opsForValue().get(Object o).toString()方法,将用户信息中的userId作为入参,执行方法获取返回结果;
D.如果C步骤中获取的结果不存在,则认为该用户当前为未登录状态(1.之前没有登录;2.之前已登录,但是登录信息已过期。)
E.此时通过调用RedisTemplate.opsForValue().set(String k,Object v) 方法,将本次用户登录信息的userId作为入参k,将经过业务逻辑处理后的MD5码作为入参v,存入到Redis缓存中,并调用RedisTemplate.expire(String k,long timeout,TimeUnitunit)方法,设置Redis缓存中key=userId的记录的失效时间,完成登录操作;
F.如果C步骤中获取结果存在,则认为该用户当前为已登录状态,并且还没有退出登录或登录信息还未过期;
G.此时通过调用RedisTemplate.delete(String key)方法,将用户的userId 作为入参key,先删除Redis缓存中key=userId的记录,再调用 RedisTemplate.opsForValue().set(String k,Object v)方法,重新存入本次的用户登录信息,并完成登录。
如图4所示。
·Redis缓存中用户登录信息的存储结构:
Key | Value |
userId1 | value1 |
userId2 | value2 |
… | … |
·该Value的生成方式:
将用户获取到的Token令牌+当前登录时的时间戳,经过MD5方式加密后生成的MD5码作为value。
3.用户在应用中执行功能操作(程序中访问需要具备登录条件的接口),判断当前操作的用户的信息是否和2步骤时存入Redis中的信息一致,完成互踢效果。
·实现方式:
A.通过当前登录的用户信息,调用RedisTemplate. opsForValue().get(Objecto).toString()方法,查询在Redis缓存中用该userId 作为key的值是否存在?
B.如果不存在,说明当前用户信息过期,或被删除,抛出异常信息,不允许用户进行操作,前端进行提示,并跳回到登录页面;
C.如果存在,则通过String类的equals方法验证当前持有的用户登录信息和Redis缓存中保存的用户登录信息是否一致?
D.如果C步骤的结果一致,表示该用户是登录状态且是本次登录的用户,可以进行操作;
E.如果C步骤的结果不一致,表示该用户不是登录状态,或已在别处登录时修改了Redis中的信息,则抛出异常,不允许用户操作,前端进行提示,并跳回到登录页面。
如图5所示。
Claims (5)
1.一种基于Redis缓存实现防止重复登录的方法,其特征是,将用户信息的userid作为Redis的key、将用户登录信息的token经过业务处理后作为value即关键值、缓存在Redis中,并设置失效时间,同一用户在多次登录时、只保留最后一次登录的用户登录信息;用户在在多个设备上访问同一个网站,或者在同一个设备上打开多个窗口去访问不同的网站或相同的网站时,运行验证程序时,通过验证当前用户登录信息和缓存中的用户登录信息是否一致判断该用户是否是合法登录状态,防止重复登录。
2.根据权利要求1所述的基于Redis缓存实现防止重复登录的方法,其特征是,用户执行步骤的执行前置条件:
1)Redis部署完成;
2)服务端完成Redis配置信息;
3)Redis存储的数据结构已确定;
执行步骤:用户访问Redis数据库服务器,执行登录操作;校验用户信息:校验Redis中该用户key是否存在?如果存在,按用户输入验证信息并更新用户信息;如果不存在,存入用户信息;验证该用户的登录信息是否已存在,然后将用户的登录信息存入Redis。
3.根据权利要求1所述的基于Redis缓存实现防止重复登录的方法,其特征是,
验证方式:A.通过调用RedisTemplate.opsForValue().get(Object o).toString()方法,将用户的userId作为入库的参数,获取返回结果;
B.如果获取的结果为空,认为之前没有登录,通过调用RedisTemplate.opsForValue().set(String k,Object v)方法,将本次登录信息的userId作为key,将业务处理后的token作为value,存入Redis中,调用RedisTemplate.expire(String k,long timeout,TimeUnit unit)方法,设置Redis中key=userId的记录的失效时间,并完成登录;
C.如果获取结果不为空,则认为之前已登录,并且还没有退出登录,通过调用RedisTemplate.delete(String key)方法,将用户的userId作为入库参数,删除Redis中key=userId的记录,再调用RedisTemplate.opsForValue().set(String k,Object v)方法,重新存入本次的登录信息,并完成登录。
4.根据权利要求1所述的基于Redis缓存实现防止重复登录的方法,其特征是,用户登录信息的token经过业务处理后作为关键值(value)的生成方式:Token令牌+当前登录时的时间戳,经过MD5加密后生成的MD5码。
5.根据权利要求1所述的基于Redis缓存实现防止重复登录的方法,其特征是,用户访问需要具备登录条件的接口:通过用户信息,调用RedisTemplate.opsForValue().get(Object o).toString()方法,查询Redis中用该userId作为key的值是否存在,
A.如不存在则抛出异常,不允许用户访问,前端跳到登录页面;
B.如存在则通过String类的equals方法验证当前持有的登录信息和Redis中存的登录信息是否不一致,如一致,则可以访问;如不一致,则抛出异常,不允许用户访问,前端跳到登录页面。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011624182.1A CN112968862A (zh) | 2020-12-31 | 2020-12-31 | 一种基于redis的单点登录方法与装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011624182.1A CN112968862A (zh) | 2020-12-31 | 2020-12-31 | 一种基于redis的单点登录方法与装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112968862A true CN112968862A (zh) | 2021-06-15 |
Family
ID=76271619
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011624182.1A Pending CN112968862A (zh) | 2020-12-31 | 2020-12-31 | 一种基于redis的单点登录方法与装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112968862A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114139135A (zh) * | 2022-02-08 | 2022-03-04 | 深圳希施玛数据科技有限公司 | 设备登录管理方法、装置及存储介质 |
CN114238888A (zh) * | 2021-12-13 | 2022-03-25 | 浪潮卓数大数据产业发展有限公司 | 分布式系统基于Redis控制账号单设备登录的方法 |
CN116055554A (zh) * | 2023-02-06 | 2023-05-02 | 国电南京自动化股份有限公司 | 一种基于消息机制并应用于数字化业务的通知引擎 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106331155A (zh) * | 2016-09-26 | 2017-01-11 | 联动优势电子商务有限公司 | 一种防止用户重复登录的方法和服务器 |
CN109274685A (zh) * | 2018-11-02 | 2019-01-25 | 深圳壹账通智能科技有限公司 | 多系统登录方法、装置、计算机设备和存储介质 |
CN110086822A (zh) * | 2019-05-07 | 2019-08-02 | 北京智芯微电子科技有限公司 | 面向微服务架构的统一身份认证策略的实现方法及系统 |
US20200065464A1 (en) * | 2018-08-24 | 2020-02-27 | Baskaran Dharmarajan | Identification service based authorization |
CN111343145A (zh) * | 2020-02-03 | 2020-06-26 | 山东爱城市网信息技术有限公司 | 一种基于Redis的单点登录方法及装置 |
CN111541650A (zh) * | 2020-03-31 | 2020-08-14 | 紫光云技术有限公司 | 一种多站点单点登录实现方法 |
-
2020
- 2020-12-31 CN CN202011624182.1A patent/CN112968862A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106331155A (zh) * | 2016-09-26 | 2017-01-11 | 联动优势电子商务有限公司 | 一种防止用户重复登录的方法和服务器 |
US20200065464A1 (en) * | 2018-08-24 | 2020-02-27 | Baskaran Dharmarajan | Identification service based authorization |
CN109274685A (zh) * | 2018-11-02 | 2019-01-25 | 深圳壹账通智能科技有限公司 | 多系统登录方法、装置、计算机设备和存储介质 |
CN110086822A (zh) * | 2019-05-07 | 2019-08-02 | 北京智芯微电子科技有限公司 | 面向微服务架构的统一身份认证策略的实现方法及系统 |
CN111343145A (zh) * | 2020-02-03 | 2020-06-26 | 山东爱城市网信息技术有限公司 | 一种基于Redis的单点登录方法及装置 |
CN111541650A (zh) * | 2020-03-31 | 2020-08-14 | 紫光云技术有限公司 | 一种多站点单点登录实现方法 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114238888A (zh) * | 2021-12-13 | 2022-03-25 | 浪潮卓数大数据产业发展有限公司 | 分布式系统基于Redis控制账号单设备登录的方法 |
CN114139135A (zh) * | 2022-02-08 | 2022-03-04 | 深圳希施玛数据科技有限公司 | 设备登录管理方法、装置及存储介质 |
CN114139135B (zh) * | 2022-02-08 | 2022-06-21 | 深圳希施玛数据科技有限公司 | 设备登录管理方法、装置及存储介质 |
CN116055554A (zh) * | 2023-02-06 | 2023-05-02 | 国电南京自动化股份有限公司 | 一种基于消息机制并应用于数字化业务的通知引擎 |
CN116055554B (zh) * | 2023-02-06 | 2024-05-31 | 国电南京自动化股份有限公司 | 一种基于消息机制并应用于数字化业务的通知引擎 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112968862A (zh) | 一种基于redis的单点登录方法与装置 | |
US10924514B1 (en) | Machine learning detection of fraudulent validation of financial institution credentials | |
US8239954B2 (en) | Access control based on program properties | |
US9081978B1 (en) | Storing tokenized information in untrusted environments | |
CN110225029B (zh) | 注入攻击检测方法、装置、服务器及存储介质 | |
US10318728B2 (en) | Determining permissible activity based on permissible activity rules | |
JP2021518705A (ja) | ブロックチェーン台帳のためのランタイム自己修正 | |
US20110239293A1 (en) | Auditing access to data based on resource properties | |
US20060212438A1 (en) | SQL injection protection by variable normalization | |
Wu et al. | A countermeasure to SQL injection attack for cloud environment | |
KR101620601B1 (ko) | 보안성 진단 방법 및 이를 위한 컴퓨터 프로그램, 그 기록매체 | |
CN111143383B (zh) | 一种数据更新方法、装置、电子设备及存储介质 | |
Marinescu et al. | IVD: Automatic learning and enforcement of authorization rules in online social networks | |
US11949784B2 (en) | Auditing for events | |
CN112182037A (zh) | 数据校验方法、装置、设备以及存储介质 | |
CN116010926A (zh) | 登陆认证方法、装置、计算机设备和存储介质 | |
KR101318234B1 (ko) | 데이터베이스 시스템을 위한 데이터 캐시 방법 및 장치 | |
US11250139B2 (en) | Greybox fuzzing for web applications | |
US8397295B1 (en) | Method and apparatus for detecting a rootkit | |
TWI838318B (zh) | 企業資料維運系統及其方法 | |
US20220237482A1 (en) | Feature randomization for securing machine learning models | |
US11943344B2 (en) | Mutation processing for events | |
US11818259B2 (en) | Query and projection processing for events | |
US11907218B1 (en) | Automatic prevention of plan regressions | |
CN112800033B (zh) | 数据操作请求处理方法、装置、计算机设备和存储介质 |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210615 |