сохранение учетных данных пользователя в iPhone - PullRequest
2 голосов
/ 25 декабря 2009

Поскольку я новичок в программировании для iPhone, я хочу сделать что-то подобное: на главном экране моего приложения я спрашиваю имя пользователя и пароль и авторизирую пользователя, используя эту информацию, вызывая веб-сервис .net. На этом главном экране находится контроллер переключателя «Запомнить меня», чтобы приложение запомнило пользователя при следующем запуске приложения. Мои вопросы: 1. как я могу позвонить .net веб-сервисов в iPhone? 2. как я могу сохранить эту информацию об имени пользователя и пароле (например, cookie в веб-приложении), чтобы у пользователя не запрашивалась информация о полномочиях? я был бы очень признателен, спасибо.

Ответы [ 4 ]

2 голосов
/ 25 декабря 2009

Постоянные учетные данные пользователя

Если вы храните имя пользователя и пароль, вам следует использовать связку ключей. Использование связки ключей на iPhone аналогично связке ключей на Mac.

Для использования связки ключей импортируйте «Security / Security.h».

У Apple есть пример здесь добавления и получения имени пользователя и пароля в их документации. Примеры методов

    - (void)mySetObject:(id)inObject forKey:(id)key;
    - (id)myObjectForKey:(id)key;
    - (void)resetKeychainItem;

позволит вам сохранить и получить учетные данные пользователя почти без изменения кода примера.

Вызов веб-сервисов, требующих аутентификации

В зависимости от вашей схемы аутентификации вы можете либо

1 голос
/ 25 декабря 2009
  1. вы используете nsmutableurlrequest для генерации запроса веб-сервисов
  2. используйте nsuserdefaults для сохранения имени пользователя и пароля

Вот пример первого:

-(void)sendUpdate {

    User *user = [User sharedManager];

    NSData *parkedLocation = [[NSString stringWithFormat:@"<location><latitude>%f</latitude><longitude>%f</longitude><userid>%@</userid><udid>%@</udid></location>", 
                               coordinate.latitude, coordinate.longitude, userid, user.udid] dataUsingEncoding:NSASCIIStringEncoding];
    //NSLog("parkedlocation = %@", parkedLocation);
    NSString *URLstr = LOCATIONS_URL;
    if (controller.put_url) 
        URLstr = controller.put_url;
    NSURL *theURL = [NSURL URLWithString:URLstr];
    //NSURLRequest *theRequest = [NSURLRequest requestWithURL:theURL cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10.0];
    NSLog(@"IN SEND UPDATE put_url = %@", controller.put_url);

    NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:theURL cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10.0];
    if (controller.put_url) {
        [theRequest setHTTPMethod:@"PUT"];
    } else {
        [theRequest setHTTPMethod:@"POST"];
    }
    [theRequest setValue:@"text/xml" forHTTPHeaderField:@"Content-type"];
    [theRequest setHTTPBody:parkedLocation];

    [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:TRUE];

    NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self];

    if (!theConnection) {
        NSLog(@"COuldn't get a connection to the iParkNow! server");
    }
}

и пример второй:

 [[NSUserDefaults standardUserDefaults] setObject:self.userName.text forKey:@"Username"];
        [[NSUserDefaults standardUserDefaults] setObject:self.password.text forKey:@"Password"];
0 голосов
/ 25 декабря 2009

NSURLRequest может использоваться для получения URL-адресов, таких как ваша служба аутентификации. И NsUserDefaults может использоваться для сохранения настроек между вызовами приложения.

Примечание: Посмотрите удивительный пример ennuikiller.

0 голосов
/ 25 декабря 2009

У вас есть два варианта: пользовательские настройки или основные данные. Оба способны - Базовые данные могут быть излишними.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...