如何维持APP用户的登陆状态

一。一种方式

原文链接:http://ciniao.legu.cc/appcan/article_54.html

这个问题太过于常见,也过于简单,以至于大部分开发者根本没有关注过这个问题,我根据和我沟通的开发者中,总结出来常用的方法有以下几种:

(个人觉得不简单么)

一:服务端默认的session

这种方式最大的优点是服务端不用增加任何代码,但APP与网站不同,通常情况下,我们会希望APP的登陆状态能维持数天,甚至数月之久,大部分的服务端程序,都会在进程重启时或客户端多久不活动时,将session全部清空,致使状态丢失

二、在客户端记录登陆用户的用户名和密码

客户端在登陆时,判断如果服务端返回验证成功,则将用户名和密码(为了客户端安全起见,可以将password多次md5)保存到本地的localStorage中,然后每次HTTP请求时,将用户名和密码带到参数中,服务端每次都需要读取数据库判断合法性,会浪费一定的服务器资源,同时,因为密码保存到本地,带来了一定的安全风险。

三:借助于数据库或文件系统等维持持久状态

这种方式,是为了解决方法一中session不持久的问题(如:将session保存的位置修改到文件或数据库),以及方案二中的安全性问题,不过这会降低服务端性能,或浪费服务端资源,代码逻辑流程如下:

数据库中,除了常见的user,password之外,额外增加一个字段,如:sessionID

在登陆接口中,如果判断用户输入的用户名密码正确时,生成一个随机字符串,保存到sessionID中,同时,客户端也将该值保存,在每次请求时,传递该值,服务端通过该值查询数据库,取得用户的身份信息。

四:密钥方式

以上三种方法,要么不能持久保存状态,要么不安全,要么每次请求都需要读取数据库验证,有没有一种方法,能解决以上的缺陷呢,于是,就有了这个方法,流程如下:

1:客户端输入用户名和密码,提交到服务端验证

2:服务端验证成功后,给客户端返回以下值:

uid : 用户的唯一标示

time : 当前unix时间戳

key : MD5(uid+time+"一个只有你自己知道的字符串密钥")

3:客户端保存以上3个值在本地,每次HTTP请求时,将以上3个值发送到服务端

4:服务端验证key,判断如果与客户端发送的key一致,则说明用户身份无误

5:服务端每次收到请求时,通过当前时间-客户端time字段得到的差值,可以控制这个key的有效期

二。类似第三方登录的方式

OAuth2.0的refresh token

或者微信公众平台的方式:

http://mp.weixin.qq.com/wiki/11/0e4b294685f817b95cbed85ba5e82b8f.html

三。app  利用memcached 保持登录

http://www.zhihu.com/question/29714299

http://www.blogjava.net/stevenjohn/archive/2013/04/03/397372.html

http://ask.dcloud.net.cn/article/157

四。安全角度:从安全和体验上解析移动App的登录

不过个人建议你长期保持登陆

这样安全性不好

最好是 自动登录~提供自动登录

至于session机制,也是需要服务器后台设置时长的。

http://baike.baidu.com/view/3858474.htm

http://tech.it168.com/j/2006-07-19/200607191220593_2.shtml

哎,失误了,不用考虑后台该考虑的事情了。

2015/12/03

1.app端与server端的心跳包:长链接,适合TCP/IP

http方式,后台session的自动延续,session设置超时时间,到期自动延续。app端不会出现session过期。

2.Image的蒙层效果。

实现点击图片(ImageView)变暗效果,有一个较简单的方法,就是将目标图片设置为背景图片(setBackground),再创建一个selector.xml文件,里面放置一张普通状态时的透明图片,一张点击状态下的棕色半透明图片,将其设置为ImageView的源图片。这样在点击ImageView时,源图片会变换透明度,达到变暗效果。但这种方法有个缺点:由于源图片已经被限制死了,假如我们需要自定义背景图片,将目标图片放置在背景图片上,就无法实现了。

多用一个ImageView控件,半透明背景的,放在目标ImageView的上面,点击的时候换另一种透明度背景的。这个方法用了两层

还可以通过滤镜和监听onTouchEvent事件来达到变暗效果的方法。关于滤镜,以后接触

如何维持APP用户的登陆状态相关推荐

  1. 基于Springboot外卖系统05:用户非登陆状态的页面拦截器实现

    1. 完善登录功能 1.1 问题分析 用户访问接口验证,如果用户没有登录,则不让他访问除登录外的任何接口. 1.前端登录,后端创建session,返给前端 2.前端访问其他接口,失效或不存在,则返回失 ...

  2. cookie保存用户的登陆状态-草案

    > >访问登陆页面的时候 login 用户名, 密码, 一周自动登陆的一框 如果登陆成功,跳转登陆后的页面 >首次访问服务端 写入cookie {"is_login&quo ...

  3. dj鲜生-30-退出用户的登陆

    退出登陆的 函数 正式使用前先测试一下 >在测试视图中练练手 访问看看效果 访问前,用户中心登陆状态 >访问后 控制台的结果 >实际的效果 已经把记录登陆状态的session数据清掉 ...

  4. php编写用户登录页面,js+php实现静态页面实时调用用户登陆状态的方法

    这篇文章主要介绍了js+php实现静态页面实时调用用户登陆状态的方法,采用在静态页面中使用js调用php页面从而实现用户登录状态的实时调用功能,需要的朋友可以参考下 本文实例讲述了js+php实现静态 ...

  5. 小白开发微信小程序,用户清理后台导致登陆状态立刻失效是什么原因呀

    小白整了个登陆账号然后信息查询小程序,用户正常点小程序右上角的退出是没问题的,我测试是可以保持登陆状态的. 好奇怪呀.云函数的数据库里的用户信息我的权限已经设置为所有人可读了,基础库是2.2.4及以上 ...

  6. 用户的登陆认证、DjangoRestFramework JWT多条件登录,导航栏实现

    用户的登陆认证.DjangoRestFramework JWT&多条件登录 Django REST framework JWT JWT介绍 JWT的构成 生成规则: header payloa ...

  7. 借助axios的拦截器实现Vue.js中登陆状态校验的思路

    在做Vue中的登陆校验时,思路应该是这样的:先确定一个路由页面是否需要登陆才能访问,如果需要,就需要用户登陆,如果不需要,用户直接可以访问. 那么,首先来说,后台系统中,不一定每一个页面都要进行登陆权 ...

  8. App用户体验的一点思考

    App用户体验的一点思考 最近我在团队中负责TImers4Me这款Android软件的开发.维护和更新,软件每次在市场上的发布都能得到用户一些有价值的反馈,通过收集整理用户们的使用反馈,我们常能看到一 ...

  9. Teams数据统计 - 用户在线离线状态

    前几天我在wechat的moments里看到以为朋友发了腾迅会议的对用户个人的年度数据统计,看上去很有大数据感.    实际上 Teams 也具备的类似的能力,只是它把这个能力开放给了开发人员,我们可 ...

  10. linux7.3ssh登陆不上,centos7.3升级openssh到7.7p1后root用户无法登陆的问题

    主机系统centos7.3.1161升级openssh到当前最新版7.7p1以后使用root用户无法登陆,一直提示用户名密码错误(实际上用户名密码是对的).下面对这个坑进行说明. step 1 .升级 ...

最新文章

  1. 干货|NLP 的四张技术路线图,带你系统设计学习路径
  2. python - 栈与队列(只有代码)
  3. VS2010 重命名文件:源文件名和目标文件名相同 的解决方案
  4. Docker 练习(一)——搭建web服务
  5. 前端开发中使用mock模拟数据
  6. php读取pdf文件乱码,使用php读取pdf文件
  7. 遍历children_二叉树:层序遍历登场!
  8. 剖析Disruptor:为什么会这么快?(二)神奇的缓存行填充
  9. git gui怎么拉取项目代码_Gitee码云如何更新项目上的代码?
  10. tracert 原理
  11. 2018年DevOps最新现状研究报告解读
  12. 2022最新 wifi大师小程序独立版3.0.8
  13. SpringBoot application.properties读取属性配置文件中文显示为乱码问题的解决
  14. 苹果用Android发文,安卓和苹果怎么传文件 安卓和苹果传文件详细教程
  15. 底部孕线形态有哪些?底部孕线形态特征是什么?
  16. 基于孪生网络的跟踪算法汇总
  17. MySQL时间格式化
  18. CSS Emmet 语法
  19. 开源神器:可快速在 iOS 设备上安装 Windows、Linux 等操作系统!
  20. 35万可以做什么生产加工类的项目进行创业?

热门文章

  1. 写一个京东最顶部的导航条
  2. 启动系统提示“NTLDR is missing”的解决办法
  3. TypeError: this.getOptions is not a function at Object.lessLoader less安装使用报错
  4. 学习C语言的心路历程
  5. 翟菜花:从风流到下流,杜蕾斯新文案为何被人口诛笔伐?
  6. 一位清华贫困生的“树洞”刷屏!“我想照亮哪怕其他一个人也好”...
  7. ABAP submit程序获取ALV数据的方法
  8. egret 微信小游戏 分享游戏截图
  9. 2012年***名单。
  10. 《MLB棒球创造营》:走近棒球运动·迈阿密马林鱼队