Требовать, чтобы пользователь прошел через экран входа в систему, прежде чем дать доступ к приложению iPhone? - PullRequest
2 голосов
/ 22 марта 2010

На iPhone, как мне показать экран входа в систему, чтобы получить имя пользователя и пароль, прежде чем дать доступ к приложению iPhone?Кроме того, хранит ли iPhone cookie на защищенном веб-сайте, таком как веб-браузер?

Я думал дать пользователям моего сайта длинный API-ключ для хранения в настройках своего iPhone вместо того, чтобы просить их войти в систему.с именем пользователя / паролем (похоже, это приложение для iPhone от Slicehost.) Каков наилучший способ заставить пользователя войти в систему безопасно?У меня есть полный контроль над дизайном приложения для iPhone и веб-сайта, поэтому я обладаю большой гибкостью.

Ответы [ 3 ]

5 голосов
/ 22 марта 2010

У меня есть эта потребность в нескольких приложениях, и я использую следующий шаблон:

В контроллере для первого представления, которое представлено пользователю, у меня есть следующий тест, где UserPrefsManager - это одиночный объект, который знает учетные данные пользователя. Этот вызов вызывает появление модального представления (FirstTimeWelcomeViewController), которое сообщает человеку, что ему необходимо зарегистрироваться.

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    UserPrefsManager * prefs = [UserPrefsManager sharedInstance];
    if (![prefs isLoggedIn])
    {
        FirstTimeWelcomeViewController * vc = [[[FirstTimeWelcomeViewController alloc] initWithNibName:@"FirstTimeWelcomeViewController" bundle:nil] autorelease];
        [self presentModalViewController:vc animated: false];
    }
    else 
    {
        if (![[RWXLocationSingleton sharedInstance] hasLocation]) {
            [[RWXLocationSingleton  sharedInstance] findLocationWithAccuracy:kCLLocationAccuracyThreeKilometers withObject:self andSelector:@selector(updateLocationsView)];
        }
        [[self tableView ]reloadData];
    }
}

FirstTimeWelcomeViewController - это, по сути, экран с кнопками, который приветствует людей и предоставляет им различные способы входа в систему:

-(IBAction) createAccount
{       
    UIViewController * parent = [self parentViewController];
    CreateAccountViewController * vc = [[[CreateAccountViewController alloc] initWithNibName:@"CreateAccountViewController" bundle:nil] autorelease];
    [self dismissModalViewControllerAnimated:false];
    [parent presentModalViewController:vc animated: false];
}

представьте, что они также существуют для ForgotPassword и loginACcount ... того же шаблона. Это приводит к замене текущего представления на представление, обрабатывающее конкретный случай, для которого они нажали кнопку.

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

-(IBAction) loginButton
{
    NSString * u = [self.username text];
    NSString * p = [self.password text];

        //
        // app specific logic that tests various inputs and creates a user object.
        //
        // goes here...
        //

        if([user checkValid])
    {
       UserPrefsManager * prefs = [UserPrefsManager sharedInstance];
       [prefs setPassword:p];
       [prefs setUsername:u];
       [self dismissModalViewControllerAnimated:FALSE];
    }
        //
        // more app specific stuff
        //
}

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

1 голос
/ 22 марта 2010

Я бы порекомендовал взглянуть на такую ​​технологию, как OAuth (http://oauth.net/).). Это позволяет пользователю авторизовать доступ к своей учетной записи для приложения без необходимости вводить в него свое имя пользователя и пароль. беспокоиться о безопасном хранении учетных данных пользователей, и если их пароли меняются и т. д., это не имеет значения.

Он используется Facebook / Twitter и многими другими известными компаниями, поэтому он не исчезнет (фактически он находится в процессе утверждения в качестве официального стандарта).

0 голосов
/ 22 марта 2010

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

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

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