无UIWebView的iOS应用程序身份验证
有没有一种方法可以在不使用Flask(Python)后端的webview的情况下对用户进行身份验证 这是我的后端登录代码:无UIWebView的iOS应用程序身份验证,ios,objective-c,ios6,flask,flask-login,Ios,Objective C,Ios6,Flask,Flask Login,有没有一种方法可以在不使用Flask(Python)后端的webview的情况下对用户进行身份验证 这是我的后端登录代码: @app.route('/login/', methods=['POST']) def login(): params = json.loads(request.data) username = params['username'] password = params['password'] u = User.query.filter_by(
@app.route('/login/', methods=['POST'])
def login():
params = json.loads(request.data)
username = params['username']
password = params['password']
u = User.query.filter_by(username=username).first()
if u:
if utils.check_password_hash(password, u.pw_hash):
login_user(u)
return ('', 200)
else:
return ('', 400)
else:
return ('', 400)
是的,你肯定能做到。这就是我通常的做法,根据您的需要进行更改(请记住,NSJSONSerialization仅在iOS 5+中可用: } 欲了解更多信息, 退房
NSURLConnection
对您的API端点执行GET
或POST
请求。这会登录到用户,我现在有,但不会验证用户。非常感谢。非常有帮助。:)将阅读苹果开发者链接。有趣的解决方案。接受httpResponse.statusCode==200
后,如何存储会话,以便连续访问Web服务不需要任何进一步的登录请求?还是在每次请求时将用户名/密码传递给服务器是一种常见的方法?
@property (nonatomic) NSOperationQueue *basicQueue; //add this to your header or as an instance variable
-(void)logMeIn:(NSString *)username password:(NSString *)password {
basicQueue = [[NSOperationQueue alloc] init];
NSDictionary *userCredentialsDict = [NSDictionary dictionaryWithObjectsAndKeys:username, @"username", password, @"password", nil];
NSData *encodedDict = [NSJSONSerialization dataWithJSONObject:userCredentialsDict options:NSJSONWritingPrettyPrinted error:NULL];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:@"http://yoursite.com/login"]];
[request setHTTPMethod:@"POST"];
[request setHTTPBody:encodedDict];
[request addValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[NSURLConnection sendAsynchronousRequest:request queue:basicQueue completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse*) response;
NSString *stringFromData = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
if (httpResponse.statusCode == 200) {
//do stuff
NSLog(@"Received data, parsed into string: %@", stringFromData);
} else {
//do error stuff or whatever
}
}];