【发布时间】:2016-04-18 09:11:17
【问题描述】:
我正在使用Alamofire 请求所有网络呼叫。最初,当我登录时,我使用一些 USERNAME 和 PASSWORD 验证请求。假设 USERNAME 是 JOHN,PASSWORD 是 1234。
假设我立即注销并使用其他凭据登录,例如 USERNAME 是 PETER,PASSWORD 是 4321。应用程序仅使用旧凭据 JOHN 和 1234 再次登录。根本没有应用新值。
退出时,退出时我应该怎么做才能删除之前的会话?
添加了sn-p
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)
}
}
【问题讨论】:
-
你能展示你尝试过的代码吗
-
你在哪里调用了这个
login方法 -
在我的 LoginViewController 中。我这里添加的sn-p是我的APIManager
-
你能证明那个方法
Alamofire.Manager.sharedInstance.login -
这是 LoginViewController 中的一个按钮动作。我将文本字段值作为用户名和密码传递
标签: ios iphone authentication alamofire