我是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);
}
答案 0 :(得分:1)
如果我理解正确,您需要保存密码,一旦输入正确,以备日后使用。
首先,我不会使用sqlite来保存密码。标准方法是使用钥匙串。看一下这个Keychain example。您可以使用其中一个many wrappers来简化生活。
更简单但更不安全的方法是使用NSUserDefaults,我强烈反对你。
拥有密码和保存的密码,您只需要进行比较。
额外提示:在数据库中保存密码时,请勿将密码保存为纯文本。保存密码的哈希值(您可以使用SHA2之类的东西),然后,当用户输入密码时,您可以将密码哈希值与保存的密码进行比较。
答案 1 :(得分:-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`不存在,那么您问用于密码