sql >> データベース >  >> RDS >> Mysql

XCode、Authentication、NSUserDefaults

    あなたは自分の考えにかなり近いです。ユーザーのログインプロセスと非常によく似たアプローチを使用しています。

    私は現在、電子メールとパスワードを1つの40文字のトークンにソルトしてハッシュします。ログインが成功した場合は、トークンをNSUserDefaultsに保存します。このトークンは、ユーザーがログアウトするまで他のすべてのWebリクエストに使用します。ログアウトすると、ユーザーのデフォルトが削除されます。

    同じプロセスで使用するスニペットを次に示します。

    // see if a login already exists
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    self.token = [defaults stringForKey:@"token"];
    
    // if the token is nil/blank, launch login view
    if(self.token == nil || [self.token isEqualToString:@""]) {
        [self loadStartView];
        return;
    }
    
    // build the request to update status
    [[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookieAcceptPolicy:NSHTTPCookieAcceptPolicyNever];
    NSString *stringData = [NSString stringWithFormat:@"<your api string here"];
    NSString *requestData = stringData;
    NSData *myRequestData = [NSData dataWithBytes: [requestData UTF8String] length: [requestData length]];
    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL: [NSURL URLWithString:[NSString  stringWithFormat:@"<your url request here>"]]];
    [request setHTTPMethod: @"POST"];
    [request setHTTPBody: myRequestData];
    NSData *jsonData = [NSURLConnection sendSynchronousRequest: request returningResponse: nil error: nil];
    NSString *json = [[[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding] autorelease];
    NSDictionary *payloadData = [json JSONValue];
    
    [request release];
    
    if([[payloadData objectForKey:@"success"] boolValue]) { // this is designed around my api, but you get the idea
        //NSLog(@"updateStatus: %@", payloadData);
        // updates the api version for every call
        [defaults setObject:self.token forKey:@"token"];
    }
    


    1. MySQLのラグ/リード機能?

    2. MicrosoftAccessデータベースのSQLServerへの移行

    3. MySQLの小数:ラウンドではなくフロア

    4. 顧客が一緒に購入した製品を見つける