呈现模态视图控制器登录屏幕

时间:2011-10-16 16:05:42

标签: iphone ios cocoa-touch security authentication

在我的应用程序中需要进行身份验证,因此当您启动标签栏上的其中一个选项卡时,如果没有“A类”检查,则会保存凭据,“B类”模式视图控制器,其中包含用于登录启动的字段。

所以我的问题是:应该实现A类中的哪个方法(loadView,viewWillAppear或者可能是另一个方法),检查是否有保存的凭据和上述其他内容。

我的第二个问题是: 正在推动modalviewcontroller正确显示登录屏幕的方式,或者我应该采取不同的方式吗?

感谢你们的回复。

OH!再多一点

还有一件事。我已经通过添加委托和呈现ModalVC(Harkonian the Piquant的方法)来实现LoginView。但在我的标签栏应用程序中,我有一个非常混乱的问题。我的意思是当用户点击登录按钮(假设一切正确并且他能够保护数据)时,如何正确切换到选项卡哪里是安全信息。我的意思是之前选择的标签。

我是通过添加

来做到的
  

- (IBAction)登录{

     
    

//一些代码

  
     

self.tabBarController.selectedIndex = 1;

它似乎运作良好,但是它是否正确?

1 个答案:

答案 0 :(得分:1)

我的应用程序中有一个非常类似的用例 - 它需要密码才能进行身份验证。经过大量的测试和调整后,我发现以下设计是最好的方法:

不要使用A类来启动您的凭证VC - 请改用app delegate。

出于安全考虑,通常您需要在用户可以查看基础视图之前显示凭据VC。在app委托中处理这个比在VC中容易得多。此外,您需要考虑当您的应用程序背景时会发生什么 - 屏幕截图是应用程序的当前状态。如果您使用viewController A来显示凭据视图,那么当应用重新启动时,用户将能够看到应用程序关闭时可见的任何敏感信息,直到应用程序完成启动并且VC A呈现凭证VC。

不要将您的凭据视图插入现有的ViewController - 而是使用新的UIWindow

您不希望任何其他视图能够位于凭据视图之上。永远。甚至通常总是位于顶部的视图,例如UIAlertView。实现此目的的最简单方法是为您的凭据视图设置一个特殊的UIWindow。显示此窗口并在需要显示凭据视图时隐藏主应用程序窗口。

这种方法在实践中看起来如何?

如果您对此设计的效果感兴趣,可以查看Audiotorium Notes for iPad中的密码功能。我花了很多时间在这个设计上,以确保它尽可能安全。

如果您有任何具体的实施任务,请随时询问,我会尽力回答。

相关问题