4

我是 iPhone 编程的新手。我正在开发一个应用程序。我的要求是

在我的第一个视图中,我将输入密码并确认密码插入到 sqlite。然后将执行验证。之后,如果密码匹配,则将推送下一个视图。我需要将确认密码保存在 sqlite 中以供下次验证。

如果我将在验证后关闭我的应用程序,那么如果我将再次构建并运行我的应用程序。现在不应打开密码验证窗口。

只有一个视图会简单地询问密码,如果当前密码等于终止应用程序之前的密码,则应用程序的成功视图将打开。现在这里的验证应该与当前密码和确认密码值进行比较[即旧密码,在终止我的应用程序之前存储]。

有可能做到这一点吗?请帮我

谢谢。

我做了这么多

-(void)insertDatapsw:(NSString *)password:(NSString *)confirmpsw

{

    //[self createEditableCopyOfDatabaseIfNeeded];

    sqlite3_stmt *insertStatement = nil;

    NSString *sql;

    int returnvalue;



    sql = [NSString stringWithFormat:@"insert into LogInPsw(ConfirmPsw) values (?)"];



    returnvalue = sqlite3_prepare_v2(database, [sql UTF8String], -1, &insertStatement, NULL);



    if (returnvalue == SQLITE_DONE)

    {

        NSAssert1 (0,@"Error: failed to prepare statement with message '%s'.", sqlite3_errmsg(database));

    }



     //sqlite3_bind_text(insertStatement, 1,[strPasswd UTF8String], -1, SQLITE_TRANSIENT);



     sqlite3_bind_text(insertStatement, 1,[strConfirmPsw UTF8String], -1, SQLITE_TRANSIENT);



       if (SQLITE_DONE!= sqlite3_step(insertStatement))

    {

        NSAssert1(0, @"Error while inserting data. '%s'", sqlite3_errmsg(database));



    }

    else

        sqlite3_reset(insertStatement);



    sqlite3_finalize(insertStatement);



}
4

2 回答 2

1

如果我对您的理解正确,您希望在正确输入密码后保存密码以供以后使用。

首先,我不会使用 sqlite 来保存密码。标准方法是使用钥匙串。看看这个钥匙串示例。您可以使用众多包装器中的一种来使生活更轻松。

更简单但更不安全的方法是使用NSUserDefaults,我强烈建议您不要这样做。

拥有密码和保存的密码,您所要做的就是比较。

额外提示:当您将密码保存在数据库中时,请勿将密码保存为纯文本。保存密码的哈希值(您可以使用类似SHA2的东西),然后,当用户输入密码时,您可以将密码哈希值与保存的哈希值进行比较。

于 2013-02-12T16:23:22.867 回答
-1

您使用“NSUserDefault” and save password in 'NSUserDefault,如果您关闭应用程序并第二次运行应用程序,您会看到“NSUserDefault” value if it exist then go on second view and second condition if you logout the app then you delete the 'NSUserDefault,下次运行该应用程序时,“NSUserDefault”不存在,然后您要求输入密码

于 2013-02-13T09:46:42.110 回答