Как сохранить учетные данные / сеанс в веб-приложении iOS? - PullRequest
0 голосов
/ 30 апреля 2020

Я создаю 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)
    }
}

Ответы [ 2 ]

0 голосов
/ 01 мая 2020

@ 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)

    }
}
0 голосов
/ 30 апреля 2020

Хотя, судя по вашему вопросу, я не думаю, что это то, что вы искали, чтобы правильно хранить учетные данные, чтобы иметь маршрут API, в котором вы можете получить токен доступа и ссылку sh, которую вы будет использовать для взаимодействия с API, даже если вы просто хотите использовать его в качестве логина. Желательно, чтобы это был OAuth (потому что он самый безопасный), но, честно говоря, вы можете использовать любой, который вам подходит.

Примечание : токен доступа и рефре sh должен храните его в iOS цепочке для ключей, так как это наиболее безопасный способ хранения учетных данных.

цепочка для ключей - лучшее место для хранения небольших секретов, таких как пароли и криптографические c ключи. https://developer.apple.com/documentation/security/certificate_key_and_trust_services/keys/storing_keys_in_the_keychain

Примечание : в качестве альтернативы, если вам необходимо, вы можете сохранить файлы cookie этого WKWebView следующим образом (но это не стандарт):

    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)
    }

Подробнее о хранении файлов cookie : https://medium.com/better-programming/how-to-get-cookies-from-wkwebview-and-uiwebview-in-swift-46e1a072a606

...