2016-05-19 7 views
0

Ich benutze Alamofire, um die HTTP-Methoden auf der IOS/Swift-Seite und während auf der Serverseite tokenbasierte Authentifizierung mit node.js/Express.Wie behalte ich das Login-Token auf IOS/Swift

Hier ist das Szenario, User-Klicks anmelden und dann wird es Alamofire verwenden, um die /auth/login URL zu nennen, die Logik zu tun, dann wird der Server-Antwort mit einem Token, dann wird der Benutzer zum Hauptbildschirm navigieren. Alles funktioniert reibungslos.

Ich benutzte Keychain, um das Token zu speichern. https://github.com/kishikawakatsumi/KeychainAccess

Alamofire.request(.POST, "https://specialapp.herokuapp.com/auth/login", parameters: parameters, encoding: .JSON) 
      .responseJSON { response in 
       if let httpError = response.result.error { 
        let statusCode = httpError.code 
        print(statusCode) 
       } else { 
        if let value = response.result.value { 
         let json = JSON(value) 
         let statusCode = (response.response?.statusCode)! 
         if statusCode == 401 { 
          print(json) 
         } else { 
          print(json["token"]) 
          let token = json["token"] 
          self.keychain["token"] = String(token) 
          self.performSegueWithIdentifier("Main", sender: sender) 
         } 
        } 


       } 

      } 

Aber das eigentliche Problem liegt, wenn ich die Anwendung zu schließen, und dann wieder erneut öffnen. Was ich erreichen möchte, ist, wann immer sich ein Benutzer anmeldet, die Anwendung schließt und sie erneut öffnet, bringt den Benutzer zurück zum Hauptbildschirm.

Wie würde ich das erreichen?

+0

jemals die Antwort dafür gefunden? –

Antwort

0

Update:

Der Anwendungszustand kann mit einigen ID für bestimmten Bildschirm gespeichert werden. In -viewDidLoad() nehmen Sie die vorherige ID von NSUserDefaults und haben Sie eine lokale Variable. Stellen Sie dann die aktuellen Seiten ID in NSUserDefaults ein. Umgekehrt in -dealloc() entfernen Sie die aktuelle ID und speichern Sie die vorherige ID.

Wenn Sie Super View-Controller haben für alle Ihre viewcontroller die Mühe zu weniger

Bewahren Sie, was auch immer in keychain Token. Die Daten, die im Schlüsselbund gespeichert sind, werden selbst nach dem Löschen der App nicht gelöscht. Finden Sie die besten Answer here

Sie eine andere Option zum Speichern von Schlüsselbund und Anwendungszustand in NSUserDefaults

+0

Danke für die Antwort, habe ich vergessen zu erwähnen, dass ich Schlüsselbund verwendet https://github.com/kishikawakatsumi/KeychainAccess – airsoftFreak

+0

Ich schaffte es, das Token zu speichern, aber muss ich etwas Logik auf dem ersten View-Controller tun? – airsoftFreak

+0

Ich habe die Frage aktualisiert. – airsoftFreak

2

In viewDidLoad Methode Sie Ihre Token wie diese überprüfen können. Wenn es nicht gesetzt ist, bedeutet dies, dass die Anmeldung noch nicht abgeschlossen ist.

if let token = NSUserDefaults.standardUserDefaults().valueForKey(KToken) as? NSString { 
     // Token stored in NSUserDefaults. 
} else { 
     // Have to login 
} 

Und speichern Wert in NSUserDefault wie folgt.

NSUserDefaults.standardUserDefaults().setValue(email, forKey: KToken) 

NSUserDefaults.standardUserDefaults().synchronize() 
Verwandte Themen