繁体   English   中英

使用Swift将NSHttpCookie存储在iOS Keychain中

[英]Store NSHttpCookie in iOS Keychain Using Swift

我有一个以HTTP cookie形式从Web服务收到的身份验证令牌。 目前,我依赖于iOS在NSHTTPCookieStorage对象中存储从HTTP请求返回的cookie的默认行为,该对象在用户关闭应用程序之前一直存在cookie。

但是,我想在密钥链中的应用程序生命周期之间保留cookie,这样当用户重新打开应用程序时,如果他们的cookie没有过期,他们将不需要再次登录。 似乎没有一种简单的方法可以将通用对象存储到钥匙串中,因此最好的方法是将通过NSHTTPCookie property检索到的字典对象序列化为字符串并将其存储在钥匙串中。 然后我可以通过NSHTTPCookie initWithProperties构造函数重建cookie并将其粘贴回NSHTTPCookieStorage对象中。

在Swift中最简单的方法是什么? 我发现Apple编写的代码名为“KeychainItemWrapper”,但它的文档非常不稳定,似乎它是为了存储用户的电子邮件(或用户名)和密码,而不是通用对象。 是否有更简单的方法来使用钥匙串,或者更安全地存储Web服务的身份验证令牌?

你应该检查SSKeychain: https//github.com/soffes/sskeychain 它在keychain API上有一个非常好用且可用的界面。

它本身不是Swift,但你仍然可以在一个快速的应用程序中使用它。 我认为没有办法存储对象本身,但正如您所提到的,您可以将cookie序列化为字符串并将其保存在钥匙串中。

以下示例了解如何使用它。

NSString * const LoginService = @"com.example.loginService"; // unique identifier shared across your apps to identify various services your app may provide that require the keychain

NSString *cookie = // cookie string
NSString *userAccountIdentifier = // could be an email, username, id, or some other way to uniquely identify the user

[SSKeychain setPassword:cookie forService:LoginService account:userAccountIdentifier error:&error];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM