MD5登陆
2015-09-23 10:31
495 查看
MD5登陆
导入第三方框架
#import "ViewController.h"
#import "NSString+Hash.h"
#import "SSKeychain.h"
@interface ViewController ()
@property (weak, nonatomic) IBOutlet UITextField *usernameText;
@property (weak, nonatomic) IBOutlet UITextField *pwdText;
@end
@implementation ViewController
#define kLoginUserNameKey @"LoginUsernameKey"
#define kLoginPwdKey @"LoginPasswordKey"
#define kLoginKeyServiceName @"LoginKeyService"
/**
1. 对用户密码进行base64编码
2. 将编码后的信息保存在用户偏好
3. 介绍base64实现原理
4. md5介绍 & 使用技巧
问题:
无法记住有效的密码
解决办法
SSKeychain
*/
- (void)viewDidLoad {
[super viewDidLoad];
// 读取用户偏好信息
self.usernameText.text = [[NSUserDefaults standardUserDefaults] objectForKey:kLoginUserNameKey];
// 读取账户信息
NSLog(@"%@", [SSKeychain allAccounts]);
NSString *pwd = [SSKeychain passwordForService:kLoginKeyServiceName account:self.usernameText.text];
self.pwdText.text = pwd;
// 删除钥匙串
[SSKeychain deletePasswordForService:kLoginKeyServiceName account:@"zhangsan"];
}
- (IBAction)login {
NSString *username = self.usernameText.text;
NSString *pwd = [self.pwdText.text md5String];
NSLog(@"%@", pwd);
NSString *urlString = @"http://10.0.1.7/login.php";
urlString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *url = [NSURL URLWithString:urlString];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
request.HTTPMethod = @"POST";
NSString *bodyString = [NSString stringWithFormat:@"username=%@&password=%@", username, pwd];
request.HTTPBody = [bodyString dataUsingEncoding:NSUTF8StringEncoding];
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
NSDictionary *result = [NSJSONSerialization JSONObjectWithData:data options:0 error:NULL];
// 数据处理代码...
NSLog(@"%@", result);
if ([result[@"userId"] intValue] > 0) {
[[NSUserDefaults standardUserDefaults] setObject:username forKey:kLoginUserNameKey];
[[NSUserDefaults standardUserDefaults] synchronize];
// 设置密码
[SSKeychain setPassword:self.pwdText.text forService:kLoginKeyServiceName account:self.usernameText.text];
}
}];
}
@end
导入第三方框架
#import "ViewController.h"
#import "NSString+Hash.h"
#import "SSKeychain.h"
@interface ViewController ()
@property (weak, nonatomic) IBOutlet UITextField *usernameText;
@property (weak, nonatomic) IBOutlet UITextField *pwdText;
@end
@implementation ViewController
#define kLoginUserNameKey @"LoginUsernameKey"
#define kLoginPwdKey @"LoginPasswordKey"
#define kLoginKeyServiceName @"LoginKeyService"
/**
1. 对用户密码进行base64编码
2. 将编码后的信息保存在用户偏好
3. 介绍base64实现原理
4. md5介绍 & 使用技巧
问题:
无法记住有效的密码
解决办法
SSKeychain
*/
- (void)viewDidLoad {
[super viewDidLoad];
// 读取用户偏好信息
self.usernameText.text = [[NSUserDefaults standardUserDefaults] objectForKey:kLoginUserNameKey];
// 读取账户信息
NSLog(@"%@", [SSKeychain allAccounts]);
NSString *pwd = [SSKeychain passwordForService:kLoginKeyServiceName account:self.usernameText.text];
self.pwdText.text = pwd;
// 删除钥匙串
[SSKeychain deletePasswordForService:kLoginKeyServiceName account:@"zhangsan"];
}
- (IBAction)login {
NSString *username = self.usernameText.text;
NSString *pwd = [self.pwdText.text md5String];
NSLog(@"%@", pwd);
NSString *urlString = @"http://10.0.1.7/login.php";
urlString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *url = [NSURL URLWithString:urlString];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
request.HTTPMethod = @"POST";
NSString *bodyString = [NSString stringWithFormat:@"username=%@&password=%@", username, pwd];
request.HTTPBody = [bodyString dataUsingEncoding:NSUTF8StringEncoding];
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
NSDictionary *result = [NSJSONSerialization JSONObjectWithData:data options:0 error:NULL];
// 数据处理代码...
NSLog(@"%@", result);
if ([result[@"userId"] intValue] > 0) {
[[NSUserDefaults standardUserDefaults] setObject:username forKey:kLoginUserNameKey];
[[NSUserDefaults standardUserDefaults] synchronize];
// 设置密码
[SSKeychain setPassword:self.pwdText.text forService:kLoginKeyServiceName account:self.usernameText.text];
}
}];
}
@end
相关文章推荐
- RPC failed; result=22, HTTP code = 411
- HTTP Header 属性列表
- nginx中http核心模块的配置指令2
- nginx中http核心模块的配置指令3
- nginx中http核心模块的配置指令4
- nginx中http的fastcgi模块的配置指令1
- 如何在 Linux 中快速地通过 HTTP 提供文件访问服务
- 深入HTTP head的使用详解
- ASP 中使用 HTTP 协议发送参数详解
- C#基于socket模拟http请求的方法
- http www安全必备知识
- asp HTTP 500错误 常见问题分析
- POST与GET方法的区别简要分析
- http代理相关知识分析
- C#使用post发送和接收数据的方法
- 在Node.js中使用HTTP上传文件的方法
- VB使用XMLHTTP实现Post与Get的方法