Функциональность входа на iPhone для существующего веб-сайта - PullRequest
3 голосов
/ 06 ноября 2011

Я хочу создать приложение для iphone, в котором серверная часть будет поддерживаться через веб-сервис rails (UI-less / JSON).Как и в случае с другими веб-сайтами, одна из функций, которые у меня появятся, - вход в систему и выход из нее.Прямо сейчас я думаю о том, как мне спроектировать эту функцию входа в систему на iPhone и что должен делать мой веб-сервис rails?

У кого-нибудь есть указания, как это сделать?Это то, о чем я думал до сих пор.

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

Когда пользователь вызывает логин ws, я проверю, чтобы убедиться, что кредиты для входа пользователя действительны и когда ониЯ передам им токен, который они сохранят (как мне сохранить токен? Я не думаю, что у iPhone есть сеанс), и им придется вызывать другой веб-сервис, передающий токен / email / pass, чтобы сигнализировать о том, чтоклиент получил ключ.

Для каждого ограниченного ws-вызова пользователю необходимо будет передать маркер для вызова службы.

Когда пользователь выйдет из системы, токен будет признан недействительным.

По сути, я просто скопировал механизм OAuth или что-то в этом роде.Мой самый большой вопрос - как я могу хранить токен на стороне клиента (iPhone).

1 Ответ

1 голос
/ 23 января 2012

Вы можете использовать NSUserDefaults для хранения токена, вы устанавливаете ключ и сохраняете и извлекаете его для этого ключа.

Когда пользователь выходит из системы, вы можете просто очистить NSUserDefault для этого ключа.

-(void)saveToUserDefaults:(NSString*)myString
{
    NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];

    if (standardUserDefaults) {
        [standardUserDefaults setObject:myString forKey:@"LoginAuthToken"];
        [standardUserDefaults synchronize];
    }
}

-(NSString*)retrieveFromUserDefaults
{
    NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];
    NSString *val = nil;

    if (standardUserDefaults) 
        val = [standardUserDefaults objectForKey:@"LoginAuthToken"];

    return val;
}

Ссылки;

http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSUserDefaults_Class/Reference/Reference.html

http://www.cocoadev.com/index.pl?NSUserDefaults

Если вы хотите сохранить имя пользователя и пароль для своего веб-сервиса, вы должны использовать ios Keychain accessдля обеспечения безопасности.

Ссылка;

http://developer.apple.com/library/mac/#documentation/security/conceptual/keychainServConcepts/02concepts/concepts.html

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