2016-04-18 13 views
0

私はすべてのWeb呼び出しのためにAlamofireリクエストを使用しています。私がログインすると、最初にUSERNAMEとPASSWORDでリクエストを認証します。 USERNAMEがJOHN、PASSWORDが1234であるとします。Alamofireリクエストが認証されたときにログアウトするにはどうすればよいですか?

私はすぐにログアウトし、他の認証情報でログインしています。たとえば、USERNAMEはPITERで、PASSWORDは4321です。アプリケーションは古い認証情報JOHNと1234のみで再度ログインします。新しい値はまったく適用されません。

ログアウト時に、ログアウト時に以前のセッションを削除するにはどうすればよいですか? Authorizationヘッダ内

を追加しましたスニペット

func login(userName: String!, password:String!, completion: (error: NSError?) -> Void) { 
     print(userName) // Prints PETER for second attempt 
     Alamofire.request(
      .GET, 
      Management.LOGIN_URL) 
      .authenticate(user: userName , password: password) 
      .responseJSON { response in 
       // But gives JOHN's data for second attempt 
       switch response.result { 
       case .Success(let JSON): 
        print(JSON) 
        self.setCookies(response) 
        self.setUserData(JSON as! NSDictionary) 
        completion(error: error) 
        } 

       case .Failure(let error): 
        completion(error: error) 
       } 
     } 
    } 

func logout() { 
     Alamofire.Manager.sharedInstance.session.resetWithCompletionHandler {() -> Void in 
      print("Resetted") 
     } 
    } 

private func setCookies(response: Alamofire.Response<AnyObject, NSError>) { 
     if let 
      headerFields = response.response?.allHeaderFields as? [String: String], 
      URL = response.request?.URL 
     { 
      let cookies = NSHTTPCookie.cookiesWithResponseHeaderFields(headerFields, forURL: URL) 
      Alamofire.Manager.sharedInstance.session.configuration.HTTPCookieStorage?.setCookies(cookies, forURL: response.response!.URL!, mainDocumentURL: nil) 
     } 
    } 
+0

あなたが試したコードを表示できます –

+0

今すぐ追加します。 – iOS

+0

この 'login'メソッドを呼び出した場所 –

答えて

0

認証が助けてくれました。

let user = "user" 
let password = "password" 

let credentialData = "\(user):\(password)".dataUsingEncoding(NSUTF8StringEncoding)! 
let base64Credentials = credentialData.base64EncodedStringWithOptions([]) 

let headers = ["Authorization": "Basic \(base64Credentials)"] 

Alamofire.request(.GET, "https://httpbin.org/basic-auth/user/password", headers: headers) 
     .responseJSON { response in 
      debugPrint(response) 
     } 
関連する問題