我AFHTTPRequestOperationManager
用来从我们的服务器获取一些数据。服务器使用基本身份验证。
当用户登录我们的应用程序时,我将凭据设置如下:
manager.credential = [NSURLCredential credentialWithUser:username password:password persistence:NSURLCredentialPersistenceForSession];
然后我提出这样的请求:
[manager GET:address parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
// ...
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
// ...
}];
当我发出请求connection:willSendRequestForAuthenticationChallenge:
时,NSURLConnectionDelegate
将调用方法(该方法在 中实现AFURLConnectionOperation
)。
当用户退出应用程序并再次登录时,我再次从用户输入设置凭据。但是,如果这发生在上一次成功请求的 30 秒内,则不会将凭据发送到身份验证(connection:willSendRequestForAuthenticationChallenge:
不调用)。这意味着即使新凭据不正确,用户也可以注销然后显然登录,因为它们从未被检查过。
如果我等待至少 30 秒,则似乎没有问题(即检查凭据并收到 401 错误)。
当用户注销时,我是否需要以某种方式清除凭据,还是我做错了?