我正在学习在Xcode 5中为IOS开发。该应用程序使用了一个主 - 详细信息模板,它使用我用PHP编写的简单API填充。
我希望用户登录应用,以便应用可以代表用户向API发出请求。我将解释我的设置(可能完全错误):
我创建了一个登录视图并将其作为初始视图。我的登录视图由名为LoginViewController的类控制,该类包含“logUserIn”方法。当按下视图中的“登录”按钮时,此方法向API发送一个发布请求以检查用户的凭据,然后我的应用程序读取响应以查看它们是否有效。这就是我被困住的地方。
在我确定我拥有一套有效的凭证后,我想做两件事:
如果应用程序加载时已经保存了有效的凭据,则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
所以,这就是我真正想知道的:
答案 0 :(得分:1)
使用KeyChain services保存登录凭据,以及攻击者不希望轻易访问的其他敏感信息。
要返回主视图控制器,您可以采用多种方法。最简单的方法是在应用程序启动时(或确定用户需要输入凭据时)在主服务器上以模态方式显示登录视图控制器。用户输入凭据并确定用户已通过身份验证后,将登录视图控制器关闭回主视图控制器。