应用程序和 Web 浏览器的公共会话

Kru*_*hah 2 iphone wordpress session web-services session-variables

我对应用程序和网络浏览器之间的会话维护有疑问。

我正在开发一款 iPhone 应用程序,并且还有一个与该应用程序相同的网站(在 WordPress 中)。

我的问题是,如果用户从同一移动设备登录应用程序,是否可以在移动网络浏览器中显示用户登录信息?

简而言之,我想知道这个session存储在哪里?在应用程序中还是在设备中?如果它在设备中,那么我如何检查网络浏览器是否相同?

Azi*_*ikh 5

Cookie 是按应用程序存储的,而不是按设备存储的。Safari 有自己的沙箱,而每个本机应用程序都在自己的沙箱中运行,否则 Safari 的安全模型将受到损害。

在 OS X 中,cookie 存储在所有应用程序之间共享;在 iOS 中,cookie 存储是针对每个应用程序的。
参考:关于 URL 加载系统。

因此,对于您的场景,这就是您应该能够使其工作的方式(不过我还没有尝试过):

  1. 在您的移动应用程序中,在 Safari 中打开网站。发送 HTTP 标头,告诉 Web 服务器此点击来自您的本机应用程序
  2. 如果您已经通过 Safari 登录,那么您的服务器将识别用户。对您的服务器进行编码以发回重定向响应(仅当请求来自本机应用程序时)。此重定向响应将包含一个会话 cookie / auth_token。此外,重定向位置将使用 iOS 自定义 url 方案,例如myapp://mydashboard
  3. 在您的本机应用程序中,将应用程序注册为该自定义 url 的处理程序,以便它可以正确捕获并处理重定向
  4. 在来自本机应用程序的后续请求中,发送会话 cookie / auth_token

希望能帮助到你。

  • 也许我无法正确传达解决方案。Safari 将成为移动网络和本机应用程序之间的通用通信机制。除此之外,您将无法共享身份验证详细信息。一旦身份验证得到确认,用户应该能够继续在 Safari 或本机应用程序本身中使用网络资源。初始身份验证检查后,每个资源请求都不需要 Sarafi。 (3认同)