html - session 管理方法在移动原生应用程序、混合应用程序和 Web 应用程序中有何不同?

标签 html session cookies native hybrid-mobile-app

想要讨论有关如何在移动应用程序( native 、混合和 Web 应用程序)中管理 session 的幕后信息?

请验证以下 session 管理场景:

native (Android/iOS) 应用程序

  1. 使用 session Cookie: session Cookie 存储在您的 DefaultHttpClient 对象中。不要为每个请求创建一个新的 DefaultHttpClient(iOS 中的 AFNetworking),保留它并重用它,您的 session cookie 将得到维护。

混合(JET、ionic、Angular、Cordova)应用程序

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

Web-HTML5 应用

  1. HTML5 中的 Attribute-SessionStorage:站点可以使用它来将数据添加到 session 存储中,在该窗口(即 session )中打开的同一站点的任何页面都可以访问它,一旦您关闭窗口, session 将丢失。

感谢和问候,

罗希特

最佳答案

管理 session 的旧方法是通过 cookie。

它是如何工作的?当您的用户在您的登录屏幕中输入用户名和密码时,您会给他一个 session cookie。此 cookie 会在您的用户浏览器和您的网站中的每次交互中保留。 您需要在服务器端维护此 cookie。除了此 session cookie 之外,网站还在服务器端 session 中保存有关用户的其他信息。

这种方法有什么问题?

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

如果您的用户数量不多,您可以将此 session cookie 和其他信息保存在一个网络服务器中。但是如果用户数量很高,你需要用不同的方法来解决这个问题,比如将这个 session 信息保存在数据库或 session 服务器中。

什么是存储 session 的新方式

现代浏览器具有本地存储能力。这种本地存储非常适合用户的非关键信息。 Session storage只有一个 session ,当用户关闭浏览器(选项卡)时,它会被删除。 Local storage是针对一个站点的,您需要明确删除它,否则用户可能会选择删除它。 在此处存储任何非关键信息。如果您的用户从您的站点注销,请将其删除。

混合(JET、ionic、Angular、Cordova)应用

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

原生(Android/iOS)应用

使用 sqlite 保存所有 session 信息。切勿在 native 应用程序中使用 cookie 授权,这是不必要的且不可扩展。使用 token 授权。

所有应用程序。

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

  1. 网络应用程序 - 本地存储
  2. 混合应用程序移动 - 本地存储
  3. native 应用程序 - sqlite

读取cookie authorization vs token authorization之间的区别在这里。

secret 信息

请勿在这些存储中存储任何 secret 信息(密码、信用卡等)。将它们存储在您的数据库中,并逐个显示给用户。

关于html - session 管理方法在移动原生应用程序、混合应用程序和 Web 应用程序中有何不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38474118/

相关文章:

python - sqlalchemy.orm.scoping.scoped_session 代理能力是如何实现的?

android - 实现 retryWhen 逻辑

javascript - 从另一个域上的 JavaScript 文件设置 cookie

http - 在浏览器上保存数据

javascript - 跨不同 Node.js 路由的 Socket.io

node.js - NodeJS 应用程序之间是否存在 session ?

javascript - 如何使用 JQ 删除/重置外部 css 样式?

security - 如果使用HTTPOnly cookie,是否需要CSRF中间件?它应该是基于 session 的吗?

javascript - 如何使字符串指向 Less 中的变量?

html - OS X 的 IE9 和 FF11 有间距问题