你是否碰巧缓存了凭据缓存?如果没有,你可以忽略以下几点:)
我不知道您选择哪种身份验证模式,这里我有一个在我的iphone应用程序中使用Windows身份验证模式的示例。当服务器端挑战客户端时,我的应用程序将发回一个NSURLCredential对象:
NSURLCredential* credential = [NSURLCredential credentialWithUser:login password:password persistence:NSURLCredentialPersistenceForSession];
typedef enum {
NSURLCredentialPersistenceNone, // Credential won't be stored.
NSURLCredentialPersistenceForSession, // Credential will be stored only for this session.
NSURLCredentialPersistencePermanent // Credential will be stored in the userâs keychain and shared with other applications.
} NSURLCredentialPersistence;
如您所见,如果您使用NSURLCredentialPersistenceForSession,则凭据将被缓存,并且当服务器质询客户端时,将永远不会调用回调连接:didReceiveAuthenticationChallenge:,除非您在NSURLCredentialStorage中清除它。所以这就使得你的凭证变更没用了。必要时,可以使用nsurlCredentialPersistenceOne禁用缓存或清除缓存。