会话管理方法在移动原生应用程序、混合应用程序和 Web 应用程序中有何不同?
How Session Management approach differs in mobile native vs hybrid vs web applications?
想要讨论有关在移动应用程序(本机、混合和 Web 应用程序)中如何管理会话的幕后信息?
请验证以下会话管理场景:
本机(Android/iOS)应用程序
- 使用会话 Cookie:会话 cookie 存储在您的 DefaultHttpClient 对象中。不要为每个请求创建一个新的 DefaultHttpClient(iOS 中的 AFNetworking),保留它并重用它,您的会话 cookie 将得到维护。
混合(JET、离子、Angular、Cordova)应用程序
- 登录成功后使用localStorage存储用户信息。注销时清除 localStorage。
Web-HTML5 应用程序
- HTML5 中的 Attribute-SessionStorage:站点可以使用它来将数据添加到会话存储中,并且它可以被在 window 中打开的同一站点的任何页面访问,即会话,一旦关闭 window,会话就会丢失。
感谢和问候,
罗希特
旧的会话管理方式是通过 cookie。
它是如何工作的?当您的用户在您的登录屏幕中输入用户名和密码时,您会给他一个会话 cookie。此 cookie 会在您的用户浏览器和您的网站中的每次交互中保留。
您需要在服务器端维护此 cookie。除了此会话 cookie 之外,网站还在服务器端会话中保存有关用户的其他信息。
这种方法有什么问题?
本质上,它是不可扩展的。
如果您的用户数不高,您可以将此会话 cookie 和附加信息保存在一个网络服务器中。但是如果用户数量很高,你需要用不同的方法来解决这个问题,比如将这个会话信息保存在数据库或会话服务器中。
什么是存储会话的新方法
现代浏览器具有本地存储能力。这种本地存储非常适合用户的非关键信息。 Session storage is one session only and when user closes browser (tab), it is deleted. Local storage 用于一个站点,您需要明确删除它,否则用户可能会选择删除它。
在此处存储任何非关键信息。如果您的用户从您的站点注销,请将其删除。
混合(JET、离子、Angular、Cordova)应用程序
Cordova 应用程序与 Web 浏览器没有区别。这里你确定你的用户是本机唯一用户(手机phone);因此,只使用本地存储。
本机(Android/iOS)应用程序
使用 sqlite 保存所有会话信息。切勿在本机应用程序中使用 cookie 授权,这是不必要的且不可扩展。使用令牌授权。
所有应用程序。
对于所有应用程序,使用您的登录屏幕获取授权令牌,例如 JWT token 并将其存储在您的应用程序中。
- Web 应用程序 - 本地存储
- 混合应用程序移动 - 本地存储
- 本机应用程序 - sqlite
在此处阅读 cookie authorization vs token authorization 之间的差异。
机密信息
不要在这些存储中存储任何机密信息(密码、信用卡..)。将它们存储在您的数据库中,并逐个显示给用户。
想要讨论有关在移动应用程序(本机、混合和 Web 应用程序)中如何管理会话的幕后信息?
请验证以下会话管理场景:
本机(Android/iOS)应用程序
- 使用会话 Cookie:会话 cookie 存储在您的 DefaultHttpClient 对象中。不要为每个请求创建一个新的 DefaultHttpClient(iOS 中的 AFNetworking),保留它并重用它,您的会话 cookie 将得到维护。
混合(JET、离子、Angular、Cordova)应用程序
- 登录成功后使用localStorage存储用户信息。注销时清除 localStorage。
Web-HTML5 应用程序
- HTML5 中的 Attribute-SessionStorage:站点可以使用它来将数据添加到会话存储中,并且它可以被在 window 中打开的同一站点的任何页面访问,即会话,一旦关闭 window,会话就会丢失。
感谢和问候,
罗希特
旧的会话管理方式是通过 cookie。
它是如何工作的?当您的用户在您的登录屏幕中输入用户名和密码时,您会给他一个会话 cookie。此 cookie 会在您的用户浏览器和您的网站中的每次交互中保留。 您需要在服务器端维护此 cookie。除了此会话 cookie 之外,网站还在服务器端会话中保存有关用户的其他信息。
这种方法有什么问题?
本质上,它是不可扩展的。
如果您的用户数不高,您可以将此会话 cookie 和附加信息保存在一个网络服务器中。但是如果用户数量很高,你需要用不同的方法来解决这个问题,比如将这个会话信息保存在数据库或会话服务器中。
什么是存储会话的新方法
现代浏览器具有本地存储能力。这种本地存储非常适合用户的非关键信息。 Session storage is one session only and when user closes browser (tab), it is deleted. Local storage 用于一个站点,您需要明确删除它,否则用户可能会选择删除它。 在此处存储任何非关键信息。如果您的用户从您的站点注销,请将其删除。
混合(JET、离子、Angular、Cordova)应用程序
Cordova 应用程序与 Web 浏览器没有区别。这里你确定你的用户是本机唯一用户(手机phone);因此,只使用本地存储。
本机(Android/iOS)应用程序
使用 sqlite 保存所有会话信息。切勿在本机应用程序中使用 cookie 授权,这是不必要的且不可扩展。使用令牌授权。
所有应用程序。
对于所有应用程序,使用您的登录屏幕获取授权令牌,例如 JWT token 并将其存储在您的应用程序中。
- Web 应用程序 - 本地存储
- 混合应用程序移动 - 本地存储
- 本机应用程序 - sqlite
在此处阅读 cookie authorization vs token authorization 之间的差异。
机密信息
不要在这些存储中存储任何机密信息(密码、信用卡..)。将它们存储在您的数据库中,并逐个显示给用户。