【问题标题】:How do I retain the cookies across app restarts in iOS如何在 iOS 中跨应用重新启动时保留 cookie
【发布时间】:2014-01-03 04:32:56
【问题描述】:

我有一个 iOS 应用程序,它与托管在 Azure 中的 ASP.NET Web 应用程序通信。我使用 Azure 身份验证为来自 Google、Yahoo、Facebook 等的用户提供社交登录。

问题是,如果我杀死了应用程序,那么我就会失去一切,我需要重新登录。

我是否可以在我的 iOS 应用程序中保留浏览器控件的 cookie,这样,一旦用户登录,只要 cookie 未过期,他们就不必再次登录?

必须有某种方式来防止用户仅仅因为他们杀死应用程序或重新启动手机等而不得不多次登录。

是否有某种方法可以从 iOS 中唯一识别手机,我可以将其保存在服务器上并进行查找? - 某种匿名 ID,我可以从 javascript 获取并使用 AJAX 调用传递给服务器?

【问题讨论】:

    标签: asp.net ios azure


    【解决方案1】:

    您是否在应用启动时设置了 cookie 政策?

    NSHTTPCookieStorage* cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
    [cookieStorage setCookieAcceptPolicy:NSHTTPCookieAcceptPolicyAlways];
    

    当您重新启动时,您是否还有 cookie,还是发生了其他事情?

    NSHTTPCookie *cookie;
    NSHTTPCookieStorage *cookieJar = [NSHTTPCookieStorage sharedHTTPCookieStorage];
    for (cookie in [cookieJar cookies]) {
        NSLog(@"Cookies: %@", cookie);
    }
    

    【讨论】:

    • 不,我没有设置 cookie 策略。我很确定当应用程序重新启动时,cookies 都丢失了。我会试试这个。
    • 好的,我添加了这段代码,cookies 被保留了,我也可以读回它们。但是,我在我的应用程序中看到与以前相同的行为。它仍然无法在下一个会话中使用 cookie 值。如果我杀死 Safari 并再次访问该站点,我也会注意到 Safari 中的相同行为。
    • 所以重新进入应用时没有cookies,还是看到session_id ASPX cookie?查看您所指的“下一个会话”的连接管理。确保它正在使用共享的 cookie 存储。
    • 抱歉,我刚刚注意到您的评论“如果我杀死 Safari 并再次访问该站点,我也会注意到 Safari 中的相同行为。”然后您的应用程序的行为将相同。我建议将凭据存储在钥匙串中,并在遇到身份验证挑战时重新使用它们。
    • 另外请注意,我认为 Azure 正在使用 Oauth 2,因此 cookie 不会帮助您。我偶然发现了这个,这可能会帮助你更多地研究它。stackoverflow.com/questions/18867504/…
    猜你喜欢
    • 2019-09-20
    • 1970-01-01
    • 1970-01-01
    • 2016-01-12
    • 2013-02-11
    • 2018-01-31
    • 2010-12-10
    • 2020-07-01
    • 2010-11-19
    相关资源
    最近更新 更多