簡體   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