0

当我用我的用户名 + 密码向后端询问令牌时,它返回:

{"token":"5KB2bTHSSLgBeZjMqvfa"}

这就是我迄今为止的工作。我得到令牌,它已成功保存。

- (void)requestFinished:(ASIHTTPRequest *)request
{
    if ([request responseStatusCode] != 200) {
        [self requestFailed:request];
    }
    else {
        NSLog(@"%@", [request responseString]);
        NSData * data = [request responseData];
        NSDictionary *token = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error: nil];

        // authentication successful, store token
        NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
        [defaults setValue:[token objectForKey:@"token"] forKey:@"auth_token"];
    }
}

现在我想为每个下一个请求发送令牌,但我不知道如何。你能告诉我缺少什么吗?

NSURL *url = [NSURL URLWithString:@"http://localhost:3000/userDetails"];    
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request setDelegate:self];

// AUTH TOKEN?
[request startAsynchronous];
4

1 回答 1

0

ASI 没有“身份验证令牌”的特殊字段。如果您想将此字段添加到请求中,您可以通过以下方式执行此操作:

  1. 将其添加为 post/get 属性
  2. 将其添加为标题值addRequestHeader:value:

如果您想将它传递给每个请求,您可以考虑创建一个“API 管理器”或仅创建一个“身份验证管理器”单例类。

或者您可以将其更改为 HTTP 身份验证: http ://allseeing-i.com/ASIHTTPRequest/How-to-use#handling_http_authentication

我也会考虑使用 cookie - 如果您的后端有可能返回整个 cookie 对象而不是令牌。ASI 将处理会话 cookie。

于 2013-05-21T18:53:49.527 回答