当“应用程序”在后台运行时,您真的不想注销用户,当用户切换到另一个选项卡或暂时最小化其浏览器窗口时,您不仅要注销Web应用程序的用户.如果您要在Web应用程序中执行上述任一操作,您的用户会认为您的Web应用程序是史诗般的失败.同样,如果用户拨打的电话号码错误,或者闹钟响起,如果他们必须立即返回并在5秒前使用您的应用时登录,他们会对您感到非常恼火. .在这里,“烦躁”,我指的是市场上的一星评级和讨厌的评论.
Web应用程序自动注销基于不活动,使用服务器会话cookie.
同样,当我构建一个安全的Android应用程序时,我将实现一个基于非活动的机制,可能是这样的:
步骤#1:使用静态单例实例创建一个Session类. Session对象包含最后访问的时间戳.
步骤2:在每个活动的onResume()中,查看Session单例是否存在.如果没有,这是一个全新的过程,因此如果这不是身份验证活动,请立即执行startActivity()以启动身份验证活动.
步骤#3:返回每个活动的onResume(),如果Session对象存在,则调用extend()之类的东西.这将返回一个布尔值,true表示会话仍然良好(并且时间戳已更新到现在),否则为false.如果返回false,则执行与Session对象为null相同的操作.
步骤#4:成功时,您的身份验证活动会使用当前时间戳设置单例Session对象.
步骤#5:您的会话类’extend()方法是您确定会话是否太旧的地方.
无论用户如何进入您的应用程序,如果会话太旧(或者它是一个全新的流程),他们将被迫进行身份验证.然而,如果用户短暂中断 – 您和/或用户可以“简要”定义 – 他们不必重新进行身份验证.