如何将令牌从iphone发送到rails后端?

时间:2013-05-21 17:54:09

标签: ios objective-c authentication devise asihttprequest

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

{"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];

1 个答案:

答案 0 :(得分:0)

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

  1. 将其添加为发布/获取属性
  2. 将其添加为标题值addRequestHeader:value:
  3. 如果要将其传递给每个请求,可以考虑创建“API Manager”或仅“Authentication manager”单例类。

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

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