2014-01-31 3 views
1

Я изучаю разработку для IOS в Xcode 5. В приложении используется шаблон главной детали, который он заполняет из простого API, написанного на PHP.IOS App переключает представления после входа в систему

Я хочу, чтобы пользователи вошли в приложение, чтобы приложение могло отправлять запросы API от имени пользователя. Я объясню, что я создал (что может быть совершенно неверно):

Я создал вид входа и сделал его начальным. Мое имя входа контролируется классом с именем LoginViewController, который содержит метод «logUserIn». Когда кнопка «Войти» в представлении нажата, этот метод отправляет почтовый запрос API для проверки учетных данных пользователя, мое приложение затем считывает ответ, чтобы узнать, являются ли они действительными. Вот где я застрял.

После того как я Определив у меня есть действительный набор полномочий, которые я хочу сделать 2 вещи:

  1. Сохранить учетные данные для использования при последующих запросах
  2. переключатель с точки зрения входа обратно в мастер- Детальный просмотр

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

Вот мой LoginViewController.m:

#import "NTFYLoginViewController.h" 

@interface NTFYLoginViewController() 

@end 

@implementation NTFYLoginViewController 

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 
     // Custom initialization 
    } 
    return self; 
} 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    // Attempt to read saved credentials 
    // Check they still work 
    // Switch to master-detail view if credentials exist and are valid 
} 

- (void)didReceiveMemoryWarning 
{ 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 

- (IBAction)logUserIn:(id)sender 
{ 
    NSString *username = self.usernameField.text; 
    NSString *password = self.passwordField.text; 

    // The code here talks to the api and checks the credentials, 
    // i've swapped it for pseudo code below as the actual code 
    // is irrelevant 

    if(user is logged in) 
    { 
     // Save credentials 
     // Switch to master-detail view 
    } 

    // Display login error  
} 

@end 

Итак, вот что я действительно хочу знать:

  1. Это лучший способ пойти об этом?
  2. Как я могу переключиться на MasterViewController из моего LoginViewController?
+1

@MrBr Пользовательские настройки по умолчанию - это плохая идея для сохранения учетных данных. Пользовательские значения по умолчанию сохраняются в файле plist в незашифрованном виде. Необходимо использовать брелок. –

ответ

1

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

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

Смежные вопросы