想要讨论在移动应用程序(本机,混合和Web应用程序)的情况下如何管理会话的内幕信息?
请验证以下会话管理方案:
Native (Android/iOS) application
- 使用会话Cookie:会话Cookie存储在DefaultHttpClient对象中 . 不是为每个请求创建一个新的DefaultHttpClient(iOS中的AFNetworking),而是保留它并重复使用它,并保持会话cookie .
Hybrid (JET, ionic, Angular, Cordova) application
- 使用localStorage在成功登录后存储用户信息 . 注销时清除localStorage .
Web-HTML5 apps
- HTML5中的Attribute-SessionStorage:网站可以使用它们将数据添加到会话存储中,并且可以访问在该窗口中打开的同一站点的任何页面即会话,只要您关闭窗口,会话就会迷路了 .
感谢致敬,
罗希特
1 回答
管理会话的旧方式是通过cookie .
这个怎么运作?当您的用户在登录屏幕中输入用户名和密码时,您会给他一个会话cookie . 用户浏览器和网站中的每次互动都会保留此Cookie . 您需要在服务器端维护此cookie . 除了此会话cookie之外,网站还在服务器端会话中保存有关用户的其他信息 .
这种方法有什么问题?
固有地,它不可扩展 .
如果您的用户号不高,则可以将此会话cookie和其他信息保存在一个Web服务器中 . 但是,如果用户数量很高,则需要使用不同的方法解决此问题,例如将此会话信息保存在数据库或会话服务器中 .
什么是存储会话的新方法
现代浏览器具有本地存储容量 . 此本地存储非常适合用户的非关键信息 . Session storage仅是一个会话,当用户关闭浏览器(选项卡)时,它将被删除 . Local storage适用于一个站点,您需要明确删除它,否则用户可能会选择删除它 . 在此处存储任何非关键信息 . 如果您的用户从您的网站注销,请将其删除 .
混合(JET,离子,Angular,Cordova)应用
Cordova应用程序与Web浏览器没有区别 . 在这里,您确定您的用户只是此计算机(手机)的用户;因此,只使用本地存储 .
Native(Android / iOS)应用程序
使用sqlite保存所有会话信息 . 切勿在本机应用程序中使用cookie授权,这是不必要的,也不可扩展 . 使用令牌授权 .
所有申请 .
对于所有应用程序,使用登录屏幕获取授权令牌,例如JWT token并将其存储在您的应用程序中 .
Web应用程序 - 本地存储
混合应用程序移动 - 本地存储
本机应用程序 - sqlite
在这里阅读cookie authorization vs token authorization之间的区别 .
保密信息
请勿在任何这些存储中存储任何机密信息(密码,信用卡..) . 将它们存储在您的数据库中,并根据具体情况向用户显示 .