如何在iOS网页应用中保存凭证session?

问题描述 投票:0回答:1

我正在做一个iOS网络应用,我想保存凭证以保持会话的打开。这是我第一次开发iOS应用。

目前我只做这个。

class ViewController: UIViewController {

    @IBOutlet weak var KronosWebsite: WKWebView!
    let myUrl = URL(string:"https://mobi.kronos-sport.com")
    override func viewDidLoad() {
        super.viewDidLoad()
        let myRequest = URLRequest(url : myUrl!)
        KronosWebsite.load(myRequest)
    }
}
ios swift session web-applications credentials
1个回答
-1
投票

虽然从你的问题来看,我认为这不是你要找的东西,正确的存储凭证的方法是有一个API路由,你可以在其中获得一个访问令牌和一个刷新令牌,你将使用它来与API交互,即使你只是想把它作为一个登录。最好是使用OAuth(因为它是最安全的),但坦率地说,你可以使用任何你认为适合你的解决方案。

注意事项: 访问和刷新令牌应该保存在iOS钥匙链中,因为它是最安全的存储凭证的方式。

钥匙链是存储小秘密的最佳场所,比如密码和加密密钥。 https:/developer.apple.comdocumentationsecuritycertificate_key_and_trust_serviceskeysstoring_keys_in_the_keychain。

: 另外,如果您有必要,您可以像这样存储WKWebView的cookies (但这不是标准的)。

    if #available(iOS 11, *) {
        let dataStore = WKWebsiteDataStore.default()
        dataStore.httpCookieStore.getAllCookies({ (cookies) in
            print(cookies)
        })
    } else {
        guard let cookies = HTTPCookieStorage.shared.cookies else {
            return
        }
        print(cookies)
    }

更多关于存储Cookies的内容:https:/medium.combetter-programminghow-toget-cookies-from-wkwebview-and-uiwebview-in-swift-46e1a072a606。


-1
投票

@JuanCarlos我试着做一些类似的事情,但我不知道如何存储字典。

func storeCookies(){
    if #available(iOS 11, *) {
        let dataStore = WKWebsiteDataStore.default()
        dataStore.httpCookieStore.getAllCookies { cookies in
           var c: [String:String]=[:]
           for cookie in cookies {
                c[cookie.name]=cookie.value
           }
        print(c)
        SecItemAdd(c as CFDictionary,nil)
        }
    } else {
        guard let cookies = HTTPCookieStorage.shared.cookies else {
            return
        }
        var c: [String:String]=[:]
        for cookie in cookies {
          var c: [String:String] = [cookie.name:cookie.value]
             c[cookie.name]=cookie.value
         }
        SecItemAdd(c as CFDictionary,nil)

    }
}
© www.soinside.com 2019 - 2024. All rights reserved.