2 votes

Authentification des applications iOS sans UIWebView

Existe-t-il un moyen d'authentifier un utilisateur sans une vue web à partir d'un backend Flask (Python) ?

Voici le code de connexion de mon backend :

@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)

1voto

sashimiblade Points 620

Oui, vous pouvez très certainement le faire. Voici comment je le fais habituellement, modifiez-le selon vos besoins (gardez à l'esprit que NSJSONSerialization n'est disponible que dans iOS 5+) :

@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
    }

}];

}

Pour plus d'informations, consultez

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X