Хорошее решение для аутентификации пользователей из приложения iPhone на PHP-сервере - PullRequest
0 голосов
/ 28 октября 2011

Я пытался внедрить безопасную аутентификацию пользователя для приложения iPhone. Я в значительной степени новичок. Я видел много фрагментов кода и предложений для разных способов, а некоторые казались устаревшими. В настоящем сценарии, что было бы хорошим вариантом? JSON? ASIHTTPRequest?

До сих пор я не мог найти правильное решение для этого. Мне сложно интегрировать разные идеи и найти решение, соответствующее моим потребностям. Было бы здорово, если бы кто-то мог поделиться примером кода или, по крайней мере, указать мне на решение, опубликованное где-то. Заранее спасибо.

Тони

Ответы [ 2 ]

1 голос
/ 28 октября 2011

Какой тип аутентификации пользователя у вашего сервера?Вы можете использовать Basic Auth для аутентификации, что в значительной степени означает отправку заголовков Authorization с каждым запросом.

ASIHTTPRequest имеет функциональность, позволяющую включить базовую аутентификацию и даже представить диалоговое окно входа в систему, если вы согласны с этим (проект только что был прекращен).необходимо реализовать базовую аутентификацию на вашем сервере .

0 голосов
/ 19 марта 2015

Я использовал это для успешной аутентификации пользователя на удаленном PHP-сервере из приложения iOS.Немного поздно, но это может кому-то помочь:

-(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;
    }
}
...