我不想在密钥库中保存登录详细信息并让它们保持不变。 我想在使用应用程序时保存用户名密码,并在每次启动应用程序时让用户登录。 (为了使其安全)。 我打算将username_password保存在AppDelegate类的对象中,从而使用登录凭据在应用程序中进行Web服务调用。这是可取的吗?或者我应该在控制器对象上传递用户名密码吗?
我假设应用程序委托对象死亡,当应用程序关闭或被杀死时,它的所有变量都不会被保存。
答案 0 :(得分:1)
首先:您是否只想保存用户的一个密码/用户?或者你想保存几个密码/用户?
第二:服务器是什么?您是否要调用Web服务来检索并保存密码/用户?
第三次:出于安全原因,永远不要在NSUserDefault中保存密码/用户。
Keychain 是保存密码的最佳方式。如果你想使用一些持久性,那么你需要使用一些哈希来加密密码 值。
查看本教程中的哈希和钥匙串信息:
答案 1 :(得分:0)
除非您将它们保存到NSUserDefaults或CoreData之类的持久性中,否则您将丢失在每个应用程序启动时在AppDelegate中设置的任何变量。
答案 2 :(得分:0)
首先,出于安全原因,您不得将该信息存储在NSUserDefaults中(这是此类情况的最佳选择)。
如果您想在每次进入应用程序时插入用户名和密码,您有两个选项:
1 - 在AppDelegate中创建两个变量 2 - 创建一个全局类来存储信息
我个人建议创建一个全局类。
例如:假设您的班级名为“全球”。在你.h:
#import <Foundation/Foundation.h>
@interface GlobalValues : NSObject
@property (strong, nonatomic) NSString *username;
@property (strong, nonatomic) NSString *password;
@end
在“Global”.m文件中,您必须创建一个实例,以保持信息的持久性。然后你初始化:
#import "GlobalValues.h"
#import "L0ViewController.h"
@implementation GlobalValues
@synthesize username;
@synthesize password;
GlobalValues *globalV = nil;
+ (GlobalValues *)getInstanceOfGlobalValues
{
if (globalV == nil)
{
globalV = [[GlobalValues alloc] init];
globalV.username = 0;
globalV.password = 0;
}
return globalV;
}
要获取信息,只需调用方法:
GlobalValues *global = [GlobalValues getInstanceOfGlobalValues];
NSString *pass = global.password;
此致