咱们在使用App时,一次登陆后App若是不主动退出登陆或者清除数据,App会在很长一段时间内保持登陆状态,或者让用户感受到登陆一次就不用每次都输入用户密码才能进行登陆。银行、金融涉及到支付类的App通常不支持这种长时间的登陆状态保持。对于保持长期登陆的技术实现方式,除了和前端技术有关,还涉及到先后台的通信链接方式、后台提供的服务方式等有关。好比前端App是前端技术是原生加H5实现的,那选择的技术可能和纯原生的不同。还有若是后端使用了sso(单点登陆方式)技术那就和后端使用了webservice、Socket的方式不同,具体实现上有时候须要综合考虑。总结出来通常的登陆保持功能有以下的实现方式:
1、利用Cookie机制实现
咱们知道cookie是为了解决http无状态的一种技术,被电商、oa等web应用普遍使用。若是咱们的App和后端通信采用的http通信方式,能够利用cookie技术进行登陆状态保持。好比咱们能够把sessionID和有效期保存在cookie中,发给前端App,前端App收到后保存在本地。当访问后端服务把sessionID和有效期做为参数传给后台进行认证。直到sessionID失效,用户都不须要从新登陆。
2、用户名和密码
若是App和后端通讯不是经过http协议进行的,那cookie机制可能就不太适合。利用用户名和密码保持登陆是指用户在第一次登陆成功时,把用户名和密码保存的本地,下次用户打开App时登陆利用保存的用户名和密码在后台自动完成。这种方式须要考虑用户名和密码的安全问题,防止信息被破解。
3、token方式
token方式在app认证上用的比较广泛,App初始登陆时,提交帐号和密码数据给服务端,服务端根据定义的的策略生成一个token字符串,token字符串中能够包含用户信息、设备ID等信息以保证用户的惟一性。服务端并对token设置必定的期限。服务端把生成的token字符串传给客户端,客户端保存token字符串,并在接下来的请求中带上这个字符串。相对于在App本地token的安全性更高了。
App登陆状态保持除了实现路径外还须要考虑服务端数据持久化问题、客户端防拷贝问题、拦截破解问题等,在使用中须要综合考虑。