2017-05-22 4 views
0

J'ai une application iOS, que vous devez vous connecter, et afficher des données d'utilisateur ... Pour une édition supplémentaire, j'ai url lien vers la page, où l'utilisateur peut définir un certain spécial propriétés, ... mais il est vraiment ennuyeux pour les utilisateurs de se connecter à l'intérieur de la page, s'ils sont déjà connectés dans l'application. Pour cette raison, j'ai besoin de stocker des cookies personnalisés dans HTTPCookieStorage, de sorte que lorsque l'utilisateur accède à la page, des cookies d'authentification lui seraient définis.Swift: Définir des cookies personnalisés pour l'application Safari

Comment créer un cookie personnalisé avec valeur-clé et le stocker afin que Safari l'utilise lorsque l'utilisateur accède à ma page?

EDIT


Je fournirai plus d'informations pour mieux comprendre ma situation.

J'ai un bouton dans mon application. Après avoir cliqué sur ce bouton, j'appelle API pour obtenir un jeton valide. Après avoir reçu le jeton, j'ai besoin de stocker ce jeton en tant que cookies. La façon « serveur » de le faire serait

localStorage.setItem('token', this.token) 

Après je stocker ce jeton dans HTTPCookieStorage, je vais ouvrir ma page.

UIApplication.shared.open(myURL, options: [:], completionHandler: { (success) in 
         print("Url open") 
        }) 

Dans la page myURL, l'application recherche des cookies de jeton. Si des cookies existent, ouvrez l'application web, sinon elle présente une page de connexion. Donc, mon but est d'empêcher l'ouverture de la page de connexion.

Répondre

-1

magasin cookies:

func storeCookies() { 
    let cookiesStorage = HTTPCookieStorage.shared 
    let userDefaults = UserDefaults.standard 

    let serverBaseUrl = "http://example.com" 
    var cookieDict = [String : AnyObject]() 

    for cookie in cookiesStorage.cookies(for: NSURL(string: serverBaseUrl)! as URL)! { 
     cookieDict[cookie.name] = cookie.properties as AnyObject? 
    } 

    userDefaults.set(cookieDict, forKey: "cookiesKey") 
} 

Retrieve:

func restoreCookies() { 
    let cookiesStorage = HTTPCookieStorage.shared 
    let userDefaults = UserDefaults.standard 

    if let cookieDictionary = userDefaults.dictionary(forKey: "cookiesKey") { 

     for (_, cookieProperties) in cookieDictionary { 
      if let cookie = HTTPCookie(properties: cookieProperties as! [HTTPCookiePropertyKey : Any]) { 
       cookiesStorage.setCookie(cookie) 
      } 
     } 
    } 
} 
+1

Pourquoi (http://stackoverflow.com/a/43980792/1187415) [répéter votre réponse précédente identique] ? Si vous pensez que la question a déjà été posée et que vous y avez répondu, vous pouvez la marquer comme doublon. –

+1

Désolé, mais je ne vois pas comment cela répond à ma question? Votre code uniquement stocké déjà définir les cookies dans userDefaults, puis de retour de l'utilisateur par défaut à cookiesStorage. Je ne vois pas où je peux ajouter un nouveau cookie personnalisé? –

+0

@MartinR C'est parce que parfois le propriétaire de la publication supprime la question. Alors la réponse ne sera plus accessible. –