会话管理方法在移动本机与混合与Web应用程序中的区别如何?

RDX*_*RDX 6 cookies session html5 native hybrid-mobile-app

想要讨论在移动应用程序(本机,混合和Web应用程序)的情况下如何管理会话的内幕信息?

请验证以下会话管理方案:

原生(Android/iOS)应用程序

  1. 使用会话Cookie:会话Cookie存储在DefaultHttpClient对象中.而不是为每个请求创建一个新的DefaultHttpClient(在iOS中为AFNetworking),保留并重复使用它,并保持会话cookie.

混合(JET,离子,Angular,Cordova)应用

  1. 成功登录后,使用localStorage存储用户信息.注销时清除localStorage.

Web-HTML5应用程序

  1. HTML5中的Attribute-SessionStorage:站点可以使用它来向会话存储添加数据,并且可以访问在该窗口中打开的同一站点的任何页面即会话,并且一旦关闭窗口,会话将是丢失.

感谢致敬,

罗希特

Ati*_*gur 2

管理会话的旧方法是通过 cookie。

怎么运行的?当您的用户在登录屏幕中输入用户名和密码时,您会给他一个会话 cookie。您的用户浏览器和网站内的每次交互都会维护此 cookie。您需要在服务器端维护此 cookie。除了此会话 cookie 之外,网站还在服务器端会话中保存有关用户的其他信息。

这种方法有什么问题呢?

从本质上讲,它是不可扩展的。

如果您的用户数量不高,您可以在一台 Web 服务器中保存此会话 cookie 和附加信息。但是,如果用户数量很高,则需要使用不同的方法来解决此问题,例如将此会话信息保存在数据库或会话服务器中。

存储会话的新方法是什么

现代浏览器具有本地存储容量。此本地存储非常适合用户存储非关键信息。会话存储仅是一个会话,当用户关闭浏览器(选项卡)时,它将被删除。本地存储是针对一个站点的,您需要明确删除它,或者用户可以选择删除它。在此存储所有非关键信息。如果您的用户从您的网站注销,请将其删除。

混合(JET、离子、Angular、Cordova)应用

Cordova 应用程序与 Web 浏览器没有什么不同。这里你确定你的用户是这台电脑(手机)上的唯一用户;因此,仅使用本地存储。

本机(Android/iOS)应用程序

使用 sqlite 保存所有会话信息。切勿在本机应用程序中使用 cookie 授权,这是不必要的且不可扩展。使用令牌授权。

所有应用程序。

对于所有应用程序,请使用登录屏幕获取授权令牌(例如JWT 令牌)并将其存储在您的应用程序中。

  1. Web应用程序-本地存储
  2. 混合应用程序移动-本地存储
  3. 本机应用程序-sqlite

阅读cookie 授权与 token 授权之间的区别。

机密信息

请勿在任何此类存储中存储任何机密信息(密码、信用卡...)。将它们存储在数据库中,并根据具体情况向用户展示。

  • 一个非常令人困惑的答案。从答案中尚不清楚本地存储版本到底如何比 cookie 版本更具可扩展性。目前尚不清楚关闭和重新打开浏览器时如何保留会话。说基于 cookie 的解决方案不可扩展是不正确的:这只是服务器端的扩展、通知和持久化问题,这是可以合理解决的。最后,尚不清楚为什么这些建议是正确的,因为没有提及确实需要一些建议的一般性问题。 (29认同)