CN110708320A - 一种基于Redis对用户APP登录设备数量控制的方法 - Google Patents

一种基于Redis对用户APP登录设备数量控制的方法 Download PDF

Info

Publication number
CN110708320A
CN110708320A CN201910964152.6A CN201910964152A CN110708320A CN 110708320 A CN110708320 A CN 110708320A CN 201910964152 A CN201910964152 A CN 201910964152A CN 110708320 A CN110708320 A CN 110708320A
Authority
CN
China
Prior art keywords
user
devices
login
app
redis
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
CN201910964152.6A
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.)
Beijing Hongyuan Erudite Technology Co Ltd
Original Assignee
Beijing Hongyuan Erudite 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 Beijing Hongyuan Erudite Technology Co Ltd filed Critical Beijing Hongyuan Erudite Technology Co Ltd
Priority to CN201910964152.6A priority Critical patent/CN110708320A/zh
Publication of CN110708320A publication Critical patent/CN110708320A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0815Network architectures or network communication protocols for network security for authentication of entities providing single-sign-on or federations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明涉及网络技术领域,具体涉及是一种基于Redis对用户APP登录设备数量控制的方法,通过将从数据库进行设备信息的存储和调用更改为从Redis中进行设备信息的存储和调用,大大提高了***的运行速度,减少了开发成本,提高了***稳定性,能够有效的对用户APP登录设备数量控制,解决了现有登录设备数量控制的方法中需要反复从数据库中调用数据,频繁读取写入数据库,会大幅度降低***速度,分布式事务处理技术成本很高,访问量过高后容易产生脏数据,影响用户使用APP,因此无法有效的对用户APP登录设备数量进行控制的问题。

Description

一种基于Redis对用户APP登录设备数量控制的方法
技术领域
本发明涉及网络技术领域,具体涉及是一种基于Redis对用户APP登录设备数量控制的方法。
背景技术
服务器对用户提供服务时往往需要验证客户的登录相关信息,一部分服务是具有可登录设备数量限制,当超过可登录设备数量要求后,用户无法通过更换设备进行登录,仅能通过预留的设备进行登录,在服务器对用户登录请求进行核对时,需要反复从数据库中调用数据,频繁读取写入数据库,会大幅度降低***速度,分布式事务处理技术成本很高,访问量过高后容易产生脏数据,影响用户使用APP,因此无法有效的对用户APP登录设备数量进行控制。
发明内容
本发明针对现有登录设备数量控制的方法中需要反复从数据库中调用数据,频繁读取写入数据库,会大幅度降低***速度,分布式事务处理技术成本很高,访问量过高后容易产生脏数据,影响用户使用APP,因此无法有效的对用户APP登录设备数量进行控制的问题,提供一种基于Redis对用户APP登录设备数量控制的方法。
采用的技术方案是,一种基于Redis对用户APP登录设备数量控制的方法包括以下步骤:
第一步,用户通过设备上的APP向服务器发送登录请求信息;
第二步,服务器对登录请求信息进行拦截,同时服务器调用数据库中预留用户登录信息;
第三步,满足登录设备数量要求,服务器对用户的登录请求放行,用户能够通过APP访问,并将此次登录请求信息和预留用户登录信息均写入至Redis中,不满足用户登录设备数量要求,服务器禁止用户通过此设备上的APP访问;
第四步,用户再次通过设备上的APP向服务器发送登录请求信息;
第五步,服务器对登录请求信息进行拦截,同时服务器调用Redis中写入的上次登录请求信息和预留用户登录信息;
第六步,满足登录设备数量要求,服务器对用户的登录请求放行,用户能够通过APP访问,并将该次登录请求信息再写入至Redis中,不满足用户登录设备数量要求,服务器禁止用户通过该设备上的APP访问。
进一步的,第一步,登录请求信息包括此设备的设备号。
可选的,第二步,预留用户登录信息包括预留用户可登录设备数量、已登录设备数量和已登录设备的设备号。
可选的,第三步,用户可登录设备数量大于已登录设备数量,则服务器对用户的登录请求放行,用户能够通过APP访问,并将此次登录请求信息中设备的设备号和预留用户登录信息中预留用户可登录设备数量、已登录设备数量和已登录设备的设备号均写入至Redis中,且写入的已登录设备数量数量加1。
进一步的,第三步,用户可登录设备数量等于已登录设备数量,则服务器禁止用户通过此设备上的APP访问。
可选的,第四步,登录请求信息包括该设备的设备号。
可选的,第五步,Redis中写入的上次登录请求信息和预留用户登录信息包括上次登录请求信息中设备的设备号和预留用户登录信息中预留用户可登录设备数量、已登录设备数量和已登录设备的设备号。
可选的,设备号为通过信鸽sdk产生的token。
进一步的,第六步,用户可登录设备数量大于已登录设备数量,则服务器对用户的登录请求放行,用户能够通过APP访问,并将此次登录请求信息中设备的设备号写入至Redis中,且写入的已登录设备数量加1。
可选的,第六步,用户可登录设备数量等于已登录设备数量,则服务器禁止用户通过此设备上的APP访问。
本发明的有益效果至少包括以下之一;
1、通过将从数据库进行设备信息的存储和调用更改为从Redis中进行设备信息的存储和调用,大大提高了***的运行速度,减少了开发成本,提高了***稳定性,能够有效的对用户APP登录设备数量控制。
2、解决了现有登录设备数量控制的方法中需要反复从数据库中调用数据,频繁读取写入数据库,会大幅度降低***速度,分布式事务处理技术成本很高,访问量过高后容易产生脏数据,影响用户使用APP,因此无法有效的对用户APP登录设备数量进行控制的问题。
具体实施方式
为了使本发明的目的、技术方案及优点能够更加清晰明白,以下结合附图和实施例对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明保护内容。
一种基于Redis对用户APP登录设备数量控制的方法包括以下步骤:
第一步,用户通过设备上的APP向服务器发送登录请求信息;
第二步,服务器对登录请求信息进行拦截,同时服务器调用数据库中预留用户登录信息;
第三步,满足登录设备数量要求,服务器对用户的登录请求放行,用户能够通过APP访问,并将此次登录请求信息和预留用户登录信息均写入至Redis中,不满足用户登录设备数量要求,服务器禁止用户通过此设备上的APP访问;
第四步,用户再次通过设备上的APP向服务器发送登录请求信息;
第五步,服务器对登录请求信息进行拦截,同时服务器调用Redis中写入的上次登录请求信息和预留用户登录信息;
第六步,满足登录设备数量要求,服务器对用户的登录请求放行,用户能够通过APP访问,并将该次登录请求信息再写入至Redis中,不满足用户登录设备数量要求,服务器禁止用户通过该设备上的APP访问。
本实施例中,第一步,登录请求信息包括此设备的设备号。
本实施例中,第二步,预留用户登录信息包括预留用户可登录设备数量、已登录设备数量和已登录设备的设备号。
本实施例中,第三步,用户可登录设备数量大于已登录设备数量,则服务器对用户的登录请求放行,用户能够通过APP访问,并将此次登录请求信息中设备的设备号和预留用户登录信息中预留用户可登录设备数量、已登录设备数量和已登录设备的设备号均写入至Redis中,且写入的已登录设备数量数量加1。用户可登录设备数量等于已登录设备数量,则服务器禁止用户通过此设备上的APP访问。
基于运算的代码可以为如下:
private boolean findLoginDrvice(String appKey, String deviceId, Map<String, String> map, boolean isLogin, String userId){
List<String> device = RedisUtil.hmget(appKey, LoginDevice);
StudentDeviceLimitDtostudentDeviceLimitDto=new StudentDeviceLimitDto();
studentDeviceLimitDto.setDeviceId(deviceId);
studentDeviceLimitDto.setStudentId(userId);
studentDeviceLimitDto.setLoginTime(new Date());
if(device != null && device.size() != 0 && StringUtils.isNotBlank(device.get(0)) && !isLogin){//是否有最近登录的设备如果没有 放缓存,记录库中。
String deviceNum = device.get(0);
if(deviceId.equals(deviceNum)){//当前设备是否与最近一次登录设备相同
// try {
// studentDeviceLimitService.update(studentDeviceLimitDto);
// } catch (Exception e) {
// e.printStackTrace();
// }
return true;
}else{
return false;
}
}else{//没有当前登录设备或者登录方法,修改当前登录设备号
map.put(LoginDevice, deviceId);
RedisUtil.hmset(appKey, map);
try {
studentDeviceLimitService.update(studentDeviceLimitDto);
} catch (Exception e) {
e.printStackTrace();
}
return true;
}
}
在将信息写入Redis中时,代码可以为如下:
private int findDrviceLimit(String appKey, String userId, Map<String,String> map){
List<String> limit = RedisUtil.hmget(appKey, DeviceLimit);
int deviceNum = 0;
if(limit != null && limit.size() != 0 && StringUtils.isNotBlank(limit.get(0))){
deviceNum = Integer.parseInt(limit.get(0));
}else{
StudentManagerDto studentDto = new StudentManagerDto();
try {
studentDto = studentManagerService.findAppLoginTime(userId);
} catch (Exception e) {
e.printStackTrace();
}
if(studentDto != null){
deviceNum = studentDto.getDeviceNum();
map.put(DeviceLimit, deviceNum + "");
RedisUtil.hmset(appKey, map);
}
}
使用中,预留用户登录信息放在数据库中,当出现新的未写入设备的设备号时将预留用户登录信息和未写入设备的设备号一同写入Redis中,即提高了整体处理效率,又降低了Redis中数据量。
在第四步中,登录请求信息包括该设备的设备号。
在第五步中,Redis中写入的上次登录请求信息和预留用户登录信息包括上次登录请求信息中设备的设备号和预留用户登录信息中预留用户可登录设备数量、已登录设备数量和已登录设备的设备号。同时设备号为通过信鸽sdk产生的token。
本实施例,第六步,用户可登录设备数量大于已登录设备数量,则服务器对用户的登录请求放行,用户能够通过APP访问,并将此次登录请求信息中设备的设备号写入至Redis中,且写入的已登录设备数量加1。用户可登录设备数量等于已登录设备数量,则服务器禁止用户通过此设备上的APP访问。
通过将从数据库进行设备信息的存储和调用更改为从Redis中进行设备信息的存储和调用,大大提高了***的运行速度,减少了开发成本,提高了***稳定性,能够有效的对用户APP登录设备数量控制。解决了现有登录设备数量控制的方法中需要反复从数据库中调用数据,频繁读取写入数据库,会大幅度降低***速度,分布式事务处理技术成本很高,访问量过高后容易产生脏数据,影响用户使用APP,因此无法有效的对用户APP登录设备数量进行控制的问题。
为了更大程度的提高速度,将写入redis的操作进行优化(由普通的写入,即获取一次链接,写入一次,关闭链接, 再次写入需要再获取链接,重复上步过程;改为使用redis的管道机制,即创建一次链接,可多次写入数据,写入完成后再关闭链接)
其优化的方式可以如下:
public static void pipelineHmset(String keys, Map<String, String> map) {
ShardedJedis redis = getShardedJedis();
ShardedJedisPipeline p = redis.pipelined();
if (StringUtil.isNotEmpty(keys)) {
for (String key : keys.split(",")) {
p.hmset(RedisKeyUtil.getAppLogin(key), map);
}
}
p.sync();
}

Claims (10)

1.一种基于Redis对用户APP登录设备数量控制的方法,其特征在于:包括以下步骤:
第一步,用户通过设备上的APP向服务器发送登录请求信息;
第二步,服务器对登录请求信息进行拦截,同时服务器调用数据库中预留用户登录信息;
第三步,满足登录设备数量要求,服务器对用户的登录请求放行,用户能够通过APP访问,并将此次登录请求信息和预留用户登录信息均写入至Redis中,不满足用户登录设备数量要求,服务器禁止用户通过此设备上的APP访问;
第四步,用户再次通过设备上的APP向服务器发送登录请求信息;
第五步,服务器对登录请求信息进行拦截,同时服务器调用Redis中写入的上次登录请求信息和预留用户登录信息;
第六步,满足登录设备数量要求,服务器对用户的登录请求放行,用户能够通过APP访问,并将该次登录请求信息再写入至Redis中,不满足用户登录设备数量要求,服务器禁止用户通过该设备上的APP访问。
2.根据权利要求1所述的一种基于Redis对用户APP登录设备数量控制的方法,其特征在于:所述第一步,登录请求信息包括此设备的设备号。
3.根据权利要求2所述的一种基于Redis对用户APP登录设备数量控制的方法,其特征在于:所述第二步,预留用户登录信息包括预留用户可登录设备数量、已登录设备数量和已登录设备的设备号。
4.根据权利要求3所述的一种基于Redis对用户APP登录设备数量控制的方法,其特征在于:所述第三步,用户可登录设备数量大于已登录设备数量,则服务器对用户的登录请求放行,用户能够通过APP访问,并将此次登录请求信息中设备的设备号和预留用户登录信息中预留用户可登录设备数量、已登录设备数量和已登录设备的设备号均写入至Redis中,且写入的已登录设备数量数量加1。
5.根据权利要求4所述的一种基于Redis对用户APP登录设备数量控制的方法,其特征在于:所述第三步,用户可登录设备数量等于已登录设备数量,则服务器禁止用户通过此设备上的APP访问。
6.根据权利要求5所述的一种基于Redis对用户APP登录设备数量控制的方法,其特征在于:所述第四步,登录请求信息包括该设备的设备号。
7.根据权利要求6所述的一种基于Redis对用户APP登录设备数量控制的方法,其特征在于:所述第五步,Redis中写入的上次登录请求信息和预留用户登录信息包括上次登录请求信息中设备的设备号和预留用户登录信息中预留用户可登录设备数量、已登录设备数量和已登录设备的设备号。
8.根据权利要求7所述的一种基于Redis对用户APP登录设备数量控制的方法,其特征在于:所述设备号为通过信鸽sdk产生的token。
9.根据权利要求8所述的一种基于Redis对用户APP登录设备数量控制的方法,其特征在于:所述第六步,用户可登录设备数量大于已登录设备数量,则服务器对用户的登录请求放行,用户能够通过APP访问,并将此次登录请求信息中设备的设备号写入至Redis中,且写入的已登录设备数量加1。
10.根据权利要求9所述的一种基于Redis对用户APP登录设备数量控制的方法,其特征在于:所述第六步,用户可登录设备数量等于已登录设备数量,则服务器禁止用户通过此设备上的APP访问。
CN201910964152.6A 2019-10-11 2019-10-11 一种基于Redis对用户APP登录设备数量控制的方法 Pending CN110708320A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910964152.6A CN110708320A (zh) 2019-10-11 2019-10-11 一种基于Redis对用户APP登录设备数量控制的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910964152.6A CN110708320A (zh) 2019-10-11 2019-10-11 一种基于Redis对用户APP登录设备数量控制的方法

Publications (1)

Publication Number Publication Date
CN110708320A true CN110708320A (zh) 2020-01-17

Family

ID=69199343

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910964152.6A Pending CN110708320A (zh) 2019-10-11 2019-10-11 一种基于Redis对用户APP登录设备数量控制的方法

Country Status (1)

Country Link
CN (1) CN110708320A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114238888A (zh) * 2021-12-13 2022-03-25 浪潮卓数大数据产业发展有限公司 分布式***基于Redis控制账号单设备登录的方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105978947A (zh) * 2016-04-27 2016-09-28 努比亚技术有限公司 对同一账号登录设备数量控制的方法及移动终端
US20170195311A1 (en) * 2015-04-21 2017-07-06 Tencent Technology (Shenzhen) Company Limited Login method, server, and login system
CN107277002A (zh) * 2017-06-12 2017-10-20 环球智达科技(北京)有限公司 限制同一用户账号登录终端数量的方法
CN108964990A (zh) * 2018-06-28 2018-12-07 郑州云海信息技术有限公司 一种多设备管理***中的设备名显示方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170195311A1 (en) * 2015-04-21 2017-07-06 Tencent Technology (Shenzhen) Company Limited Login method, server, and login system
CN105978947A (zh) * 2016-04-27 2016-09-28 努比亚技术有限公司 对同一账号登录设备数量控制的方法及移动终端
CN107277002A (zh) * 2017-06-12 2017-10-20 环球智达科技(北京)有限公司 限制同一用户账号登录终端数量的方法
CN108964990A (zh) * 2018-06-28 2018-12-07 郑州云海信息技术有限公司 一种多设备管理***中的设备名显示方法及装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114238888A (zh) * 2021-12-13 2022-03-25 浪潮卓数大数据产业发展有限公司 分布式***基于Redis控制账号单设备登录的方法

Similar Documents

Publication Publication Date Title
KR101959428B1 (ko) 웹 페이지들에 대한 확장 수정들을 관리하기 위한 시스템
US20210019849A1 (en) Method for External Data-Based Constructing Various Triggering Mechanisms to Execute Smart Contract in Blockchain Network and System Thereof
CN108763921B (zh) 一种应用软件和sdk管控的方法
US20080148283A1 (en) Method and Apparatus for Widget-Container Hosting and Generation
US9565562B1 (en) Knowledge based authentication using mobile devices
CN110519240B (zh) 一种单点登录方法、装置及***
CN103975336A (zh) 对值中的标签进行编码以俘获信息流
CN110032568B (zh) 数据结构的读取及更新方法、装置、电子设备
CN104615787B (zh) 一种更新界面显示方法及装置
CN116663050A (zh) 一种基于数据库的智能合约数据快速查询方法
CN110708320A (zh) 一种基于Redis对用户APP登录设备数量控制的方法
CN112968862A (zh) 一种基于redis的单点登录方法与装置
CN106203110B (zh) 基于逆向解析机制的Android安全增强***
CN113486114B (zh) 一种区块链智能合约调用管理方法
CN110046205A (zh) 一种关系型数据库行安全访问控制方法及***
CN109801166B (zh) 一种基于状态锁的智能合约的安全函数的设计方法及***
CN112765434A (zh) 一种区块链和数字金融的业务数据处理方法及大数据平台
CN112468387A (zh) 一种模板消息发送方法、计算机设备以及计算机存储介质
US9800585B2 (en) Restricting access by services deployed on an application server
CN107886008A (zh) 文件管理方法和***
WO2020215211A1 (zh) 一种站点会话终止方法、装置、终端设备及介质
CN112905272A (zh) 一种适用于多场景原型组合的开户校验方法
CN112035867A (zh) 一种Web应用权限管理方法、***、设备及存储介质
CN112491807A (zh) 基于交互式应用检测技术的水平越权漏洞检测方法
CN110460585A (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

Application publication date: 20200117

RJ01 Rejection of invention patent application after publication