私はこれを使用して、iOSアプリケーションからリモートPHPサーバーを使用しているユーザーを正常に認証しました。少し遅れましたが、誰かを助けるかもしれません:
-(void)saveNewUserDetails{
[[NSUserDefaults standardUserDefaults] setObject:self.username.text forKey:@"userName"];
[SSKeychain setPassword:self.pwd.text forService:@"MiniCEXReporting" account:self.username.text]; //store securely rather than in NSUserDefaults
[[NSUserDefaults standardUserDefaults] synchronize];
}
-(void) makeConnection{
self.activityIndicator.hidden=NO;
[self.activityIndicator startAnimating];
receivedData=[[NSMutableData alloc] init];
NSString *userString=self.username.text;
postRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"https://someURLhereWithUsernameappended/%@", userString]]];
//for the real thing
//postRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"https://somsis-dev.leeds.ac.uk/api/minicex/%@", self.username.text]]];
[postRequest setHTTPMethod:@"POST"];
NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:postRequest delegate:self];
[connection start];
}
- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge {
if ([challenge previousFailureCount] == 0) {
NSLog(@"received authentication challenge");
NSURLCredential *newCredential = [NSURLCredential credentialWithUser:self.username.text
password:self.pwd.text
persistence:NSURLCredentialPersistenceForSession];
NSLog(@"credential created");
[[challenge sender] useCredential:newCredential forAuthenticationChallenge:challenge];
NSLog(@"responded to authentication challenge");
}
else {
NSLog(@"authentication failure username -%@- with password -%@-", self.username.text, self.pwd.text);
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Authentication Error"
message:@"Please check your username and password"
delegate:self
cancelButtonTitle:@"Ok"
otherButtonTitles:nil];
[alert show];
[self.activityIndicator stopAnimating];
self.activityIndicator.hidden=YES;
}
}
ありがとうございます。私はサーバーを制御している。私が基本的に必要とするのは、「POST」を使用して認証を実行することです。私はObjective-Cの新機能ですから、サンプルコードは大きな助けになります。私は要求(NSData、NSDictionary)が構成されている部分が必要です。 –
ASIHTTPRequestを使用している場合は、[request setUsername:@ "foo"]と[request setPassword:@ "bar"]を使用して資格情報を設定するだけで済みます。また、組み込みの認証ダイアログを使用する場合は、[request setShouldPresentAuthenticationDialog:YES]も設定してください。 他のフレームワークを使用している場合、コードは[request addRequestHeader:@ "Authorization" value:@ "あなたのコード化された認証文字列"]と非常によく似ています。 –