一种用于IOS客户端的用户登录状态保存方法及系统与流程

文档序号:12278659阅读:616来源:国知局
一种用于IOS客户端的用户登录状态保存方法及系统与流程

本发明涉及IOS客户端的应用开发领域,具体涉及一种用于IOS客户端的用户登录状态保存方法及系统。



背景技术:

当前移动互联网领域中绝大部分APP(Application,应用软件)在获取更多的使用权限时,均需要用户进行登录。用户登录的方式一般为两种:用户名和密码登录、以及第三方(例如QQ、微信和微博等)登录。

目前,绝大部分的APP均设置有保留用户登录状态的功能,但是,部分APP保留用户登录状态的同时未能保证安全性,进而导致用户输入用户登录信息(用户名和密码)可能被黑客伪造服务端进行抓包,从而得知用户登录信息。部分APP保留用户登录状态的功能只是将用户名和密码保存至本地,每次启动APP时,客户端还是需要用户名和密码向服务端请求登录,进而大大增加了服务端的压力,并且在无网状态下用户登录状态会丢失。



技术实现要素:

针对现有技术中存在的缺陷,本发明解决的技术问题为:在IOS客户端上首次对APP进行用户注册后,在有或没有网络的情况下均在客户端上保持用户的登录状态。

为达到以上目的,本发明提供的用于IOS客户端的用户登录状态保存方法,包括以下步骤:

步骤A:APP在客户端上启动后,判断客户端是否保存有用户登录状态信息,若是,转到步骤D;否则转到步骤B;

步骤B:客户端获取用户输入的用户登录信息,用户登录信息包括用户名和密码;客户端与服务端连接成功、且服务端确认用户登录信息正确后,服务端生成与用户登录信息对应的长token、以及与长token关联的短token,转到步骤C;

步骤C:服务端与客户端均保存长短token、以及用户登录信息,客户端保存的长短token、以及用户登录信息即为步骤A中的用户登录状态信息;

步骤D:客户端读取用户登录状态信息中的长短token和用户登录信息;

步骤E:用户在APP上执行需要用户登录状态信息的使用请求时,客户端向服务端发送包含有当前用户对应的短token的使用请求;

步骤F:用户在客户端上使用APP时,客户端会判断长短token是否过期:

若长token过期,此时无论短token是否过期,均转到步骤B;

若长token未过期,短token过期,客户端会向服务端发送带有长token的更换短token请求,服务端确认长token有效后,根据自身保存的与客户端相同的长token,重新生成短token,服务端和客户端均将原先的短token,替换为新生成的短token。

本发明提供的实现上述方法的用于IOS客户端的用户登录状态保存系统,包括设置于IOS客户端上的用户登录状态信息定位模块、用户登录模块、用户登录状态信息读取模块、用户登录状态信息使用模块和token验证模块;设置于服务端上的token生成模块和短token更换模块;同时设置于IOS客户端和服务端上的用户登录状态信息保存模块;

用户登录状态信息定位模块用于:APP在客户端上启动后,判断是否保存有用户登录状态信息,若是,向用户登录状态信息读取模块发送用户登录状态信息信号;否则向用户登录模块发送用户登录信息输入信号;

用户登录模块用于:收到用户登录信息输入信号,提示用户输入用户登录信息,用户登录信息包括用户名和密码;请求与服务端连接;

token生成模块用于:客户端与服务端连接成功、且确认用户登录信息正确后,生成与用户登录信息对应的长token、以及与长token关联的短token;分别向客户端和服务端上的用户登录状态信息保存模块发送用户登录状态信息保存信号;

用户登录状态信息保存模块用于:收到用户登录状态信息保存信号后,保存新生成的长短token、以及用户登录信息,保存的长短token、以及用户登录信息即为用户登录状态信息定位模块中的用户登录状态信息;

用户登录状态信息读取模块用于:收到用户登录状态信息信号后,读取用户登录状态信息中的长短token和用户登录信息;

用户登录状态信息使用模块用于:用户在APP上执行需要用户登录状态信息的使用请求时,向服务端发送包含有当前用户对应的短token的使用请求;

token验证模块用于:用户在客户端上使用APP时,判断长短token是否过期:

若长token过期,此时无论短token是否过期,均向用户登录模块发送用户登录信息输入信号;

若长token未过期,短token过期,向短token更换模块发送带有长token的更换短token请求;

短token更换模块用于:收到更换短token请求、并确认短token请求中的长token有效后,根据自身保存的与客户端相同的长token,重新生成短token;分别向客户端和服务端上的用户登录状态信息保存模块发送用户登录状态信息保存信号。

与现有技术相比,本发明的优点在于:

(1)本发明在非特殊情况下(例如卸载APP,半年以上不运行APP,用户账号被封禁、主动登出等),因为用户每次运行APP时都会有首次注册或登录时保存在本地的用户登录状态信息,所以与现有技术中需要用户名和密码向服务端请求登录相比,本发明不需要向服务端请求登录,显著减缓了服务端的“压力”,即使用户在无网络环境下进入APP时,仍然不会丢失登录状态,就算用户更新APP,也不必重新登录,非常便于人们使用,适于推广。

与此同时,与现有技术中可能被黑客伪造服务端进行抓包,从而得知用户登录信息相比,本发明使客户端通过token与服务端进行通信连接,因此黑客无法进行伪造服务端抓包而得之用户登录信息,保证了用户使用APP的安全;在此基础上,本发明的长短token定期更换,进一步提高了安全性。

(2)本发明对客户端需要向服务端发送的连接请求参数(用户名、本地时间、密码等),会通过独特的鉴权算法进行加密处理,并且密码也会经过采用MD5算法加密,确保在客户端与服务端在传输数据过程中的安全;与此同时,客户端带有URL缓存机制,若发现本地数据与服务端数据一致,则不会去向服务端请求数据,这样可以进一步减缓服务端的压力。

(3)本发明为了避免机器人无限刷登录接口的攻击行为,为用户登录信息的输入行为设置了极验验证(一种用户体验良好,又保证了安全性的验证码系统,不同于传统的图形验证码,而是用户用手指拖拽拼图);当用户行为接近机器人时,会自动触发极验验证,极验验证SDK(Software Development Kit,软件开发工具包)本身有一套完善的安全验证系统,它会将用户滑动的手势坐标上传服务端做验证,更进一步增加了使用APP的安全性。

附图说明

图1为本发明实施例中用于IOS客户端的用户登录状态保存方法的流程图;

图2为本发明实施例中用于IOS客户端的用户登录状态保存系统的结构框图。

具体实施方式

以下结合附图及实施例对本发明作进一步详细说明。

参见图1所示,本发明实施例中的用于IOS客户端的用户登录状态保存方法,包括以下步骤:

S1:APP在IOS客户端上启动后,判断客户端是否保存有用户登录状态信息,若是,则证明用户之前已经登录过,即使用户之前关闭APP,用户登录信息也不会丢失,转到S4;否则证明用户从未登录过或上次主动登出,需提示用户注册或重新登录,转到S2。

S2:用户通过IOS客户端进行当前APP的注册或登录操作(适用于传统的账号密码登录与第三方登录):客户端获取用户输入的用户登录信息(用户名和密码)。客户端与服务端连接成功、且服务端确认用户登录信息正确后,服务端生成与用户登录信息对应的长token(用户登录状态标识符)、以及与长token关联的短token(以下简称长短token,长短token均设置有过期时间,长token的有效期为180天以上,短token的有效期小于长token,一般为7天),转到S3。

S3:服务端与客户端均保存长短token、以及用户登录信息(客户端保存的长短token和用户登录信息即为S1中的用户登录状态信息),客户端在界面上显示用户登录信息,转到S7。

S4:客户端读取用户登录状态信息中的长短token和用户登录信息,在界面上显示用户登录信息,转到S5。

S5:客户端根据服务端的当前时间t服(客户端的本地时间可以被用户随意修改,可能出现问题)、长token的过期时间t长和短token的过期时间t短,判断长短token是否过期:

若长token过期(t长-t服≤2),无论短token是否过期,均需要更换长短token(此时会返回错误码),需要重新登录或注册,转到S2;

若长token未过期,(t长-t服>2),短token过期(t短-t服≤2),则需要更换短token(此时会返回错误码),转到S6;

若长短token均未过期(t长-t服>2、且t短-t服>2),转到S7。

S5在2天之前更换短token,能够最大化避免在已过期时才去更换而让用户重复操作的弊端;在实际应用中S5可以在S3或S4之后执行,即S5可以与S7并行。

S6:客户端向服务端发送带有长token的更换短token请求,服务端确认长token有效(若无效例如账号封禁,此时会返回错误码,需要重新登录或注册,直接转到S2)后,根据自身保存的与客户端相同的长token,重新生成短token,服务端和客户端均将原先的短token,替换为新生成的短token,转到S7。

S7:用户在APP上执行需要用户登录状态信息的使用请求时(例如查看个人信息、发弹幕、送礼物、修改头像等),客户端将当前用户对应的短token作为参数加入使用请求,服务端返回使用请求的处理结果,转到S8。

S8:当用户在APP上进行主动登出的操作时,客户端和服务端均将当前用户的用户登录状态信息(用户名、密码和长短token)删除,客户端将APP的页面刷新为未登录状态。若用户下次打开APP,由于本地保存的信息已被清空,会提示用户登录,即从S2开始执行本方法(实际应用中S8可以在S3或S4之后执行,即S8可以与S7并行)。

S2中客户端与服务端连接成功的具体流程为:

S201:预先在客户端上设置鉴权加密算法和MD5加密算法,在服务端上设置对应的鉴权解密算法和MD5解密算法,转到S202。

S202:客户端将需要向服务端发送的连接请求参数(用户名、本地时间、经过MD5加密算法加密的密码等),经过鉴权加密算法加密为1个字符串后,向服务端发起带有加密字符串的连接请求,转到S203。

本实施例中的鉴权加密算法为一套自主研发的算法:SHA256算法(Secure Hash Algorithm 256,安全散列算法),由C++底层库开发,字符串的加密过程举例为:

C++底层暴露出一个方法接口:

客户端将对应参数传入:

auth=[self makeHttpUrl:action getparams:newgetDic];

得到结果的字符串类似如下:

auth=d9e1c613742377712f39516c984631f3

将此字符串作为auth参数代入到请求中(密码经过MD5加密):

https://xxx.passport.xxx.com/appLogin/username=xxxx&password=jc08921dsfjkj&auth=d9e1c613742377712f39516c984631f3。

S203:服务端将客户端发送的连接请求中的加密字符串,经过MD5解密算法和鉴权解密算法解密,若均解密成功,则确定客户端连接成功;否则确定连接失败,驳回客户端的连接请求,重新执行S2。

S2中正确的用户登录信息需要同时满足以下条件:

(1)用户登录信息合法(若非法则在客户端界面中显示错误信息);

(2)用户登录信息的输入行为不属于机器人的攻击行为,若服务端认为用户登录信息的输入行为属于机器人的攻击行为时,则对用户进行极验验证,若验证通过,则确定不属于机器人的攻击行为,否则确定属于机器人的攻击行为。

参见图2所示,本发明提供的实现上述方法的用于IOS客户端的用户登录状态保存系统,包括:

设置于IOS客户端上的用户登录状态信息定位模块、用户登录模块、用户登录状态信息读取模块、用户登录状态信息使用模块、token验证模块和加密算法设置模块;

设置于服务端上的token生成模块、短token更换模块和解密算法设置模块;

同时设置于IOS客户端和服务端上的用户登录状态信息保存模块、以及用户登出模块。

用户登录状态信息定位模块用于:APP在客户端上启动后,判断是否保存有用户登录状态信息,若是,向用户登录状态信息读取模块发送用户登录状态信息信号;否则向用户登录模块发送用户登录信息输入信号。

用户登录模块用于:收到用户登录信息输入信号,提示用户输入用户登录信息,用户登录信息包括用户名和密码;请求与服务端连接。

加密算法设置模块用于:在客户端上设置鉴权加密算法和MD5加密算法;当用户登录模块请求与服务端连接时,将需要向服务端发送的连接请求参数,经过鉴权加密算法加密为1个字符串后,向解密算法设置模块发起带有加密字符串的连接请求,所述连接请求参数包括用户名、本地时间、经过MD5加密算法加密的密码。

解密算法设置模块用于:在服务端上设置与所述鉴权加密算法对应的鉴权解密算法、以及与所述MD5加密算法对应的MD5解密算法;收到连接请求后,将连接请求中的加密字符串,经过MD5解密算法和鉴权解密算法解密,若均解密成功,则确定客户端连接成功;否则确定连接失败,驳回客户端的连接请求,重新向用户登录模块发送用户登录信息输入信号。

token生成模块用于:客户端与服务端连接成功、且确认用户登录信息正确后,生成与用户登录信息对应的长token、以及与长token关联的短token;分别向客户端和服务端上的用户登录状态信息保存模块发送用户登录状态信息保存信号;

token生成模块确认的正确的用户登录信息需要同时满足以下条件:用户登录信息合法、并且不属于机器人的攻击行为;若服务端认为用户登录信息的输入行为属于机器人的攻击行为时,token生成模块会对用户进行极验验证,若验证通过,则确定不属于机器人的攻击行为,否则确定属于机器人的攻击行为。

用户登录状态信息保存模块用于:收到用户登录状态信息保存信号后,保存新生成的长短token、以及用户登录信息,保存的长短token、以及用户登录信息即为用户登录状态信息定位模块中的用户登录状态信息。

用户登录状态信息读取模块用于:收到用户登录状态信息信号后,读取用户登录状态信息中的长短token和用户登录信息。

用户登录状态信息使用模块用于:用户在APP上执行需要用户登录状态信息的使用请求时,向服务端发送包含有当前用户对应的短token的使用请求。

token验证模块用于:用户在客户端上使用APP时,根据服务端的当前时间t服、长token的过期时间t长和短token的过期时间t短,判断长短token是否过期:

若长token过期(t长-t服≤2),此时无论短token是否过期,均向用户登录模块发送用户登录信息输入信号;

若长token未过期(t长-t服>2),短token过期(t短-t服≤2),向短token更换模块发送带有长token的更换短token请求;

若长短token均未过期(t长-t服>2、且t短-t服>2),则不进行任何操作。

短token更换模块用于:收到更换短token请求、并确认短token请求中的长token有效后,根据自身保存的与客户端相同的长token,重新生成短token;分别向客户端和服务端上的用户登录状态信息保存模块发送用户登录状态信息保存信号。

用户登出模块用于:当用户在APP上进行主动登出的操作时,将用户登录状态信息保存模块中当前用户的用户登录状态信息删除。

本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1