App保持登录状态的常用方法

  我们在使用App时,一次登录后App如果不主动退出登录或者清除数据,App会在很长一段时间内保持登录状态,或者让用户感觉到登录一次就不用每次都输入用户密码才能进行登录。
  银行、金融涉及到支付类的App一般不支持这种长时间的登录状态保持。对于保持长期登录的技术实现方式,除了和前端技术有关,还涉及到前后台的通讯连接方式、后台提供的服务方式等有关。比如前端App是前端技术是原生加H5实现的,那选择的技术可能和纯原生的不一样。还有如果后端使用了sso(单点登录方式)技术那就和后端使用了webservice、Socket的方式不一样,具体实现上有时候需要综合考虑。总结出来一般的登录保持功能有如下的实现方式:

一、利用Cookie机制实现
  我们知道cookie是为了解决http无状态的一种技术,被电商、oa等web应用广泛使用。如果我们的App和后端通讯采用的http通讯方式,可以利用cookie技术进行登录状态保持。比如我们可以把sessionID和有效期保存在cookie中,发给前端App,前端App收到后保存在本地。当访问后端服务把sessionID和有效期作为参数传给后台进行认证。直到sessionID失效,用户都不需要重新登录。

二、用户名和密码
  如果App和后端通信不是通过http协议进行的,那cookie机制可能就不太适合。利用用户名和密码保持登录是指用户在第一次登录成功时,把用户名和密码保存的本地,下次用户打开App时登录利用保存的用户名和密码在后台自动完成。这种方式需要考虑用户名和密码的安全问题,防止信息被破解。

三、token方式
  token方式在app认证上用的比较普遍,App初始登录时,提交账号和密码数据给服务端,服务端根据定义的的策略生成一个token字符串,token字符串中可以包含用户信息、设备ID等信息以保证用户的唯一性。服务端并对token设置一定的期限。服务端把生成的token字符串传给客户端,客户端保存token字符串,并在接下来的请求中带上这个字符串。相对于在App本地token的安全性更高了。
App登录状态保持除了实现路径外还需要考虑服务端数据持久化问题、客户端防拷贝问题、拦截破解问题等,在使用中需要综合考虑。

四、密钥方式
  以上三种方法,要么不能持久保存状态,要么不安全,要么每次请求都需要读取数据库验证,有没有一种方法,能解决以上的缺陷呢,于是,就有了这个方法,流程如下:
1:客户端输入用户名和密码,提交到服务端验证
2:服务端验证成功后,给客户端返回以下值:
uid : 用户的唯一标示
time : 当前unix时间戳
key : MD5(uid+time+"一个只有你自己知道的字符串密钥")
3:客户端保存以上3个值在本地,每次HTTP请求时,将以上3个值发送到服务端
4:服务端验证key,判断如果与客户端发送的key一致,则说明用户身份无误
5:服务端每次收到请求时,通过当前时间-客户端time字段得到的差值,可以控制这个key的有效期

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容