gpt4 book ai didi

IOS - 处理 HTTP header 中的 token 身份验证

转载 作者:可可西里 更新时间:2023-11-01 05:40:53 24 4
gpt4 key购买 nike

我的组织使用了多种不同的身份验证方法。我一直在努力解决的一个问题是我们使用 Oath2 的应用程序,它们期望授权 header 将 token 信息存储在 HTTP header 中。我可以为每个请求手动放置授权 header 信息,但我希望自动填充此信息,而不是为每个 NSURLSession、NSURLConnection、UIWebView 或 [UIImage: imageFromUrl] 手动添加它。在 NSURLConnection 类和 NSURLSession 的 Apples 文档中,它说它将处理旨在为您处理 HTTP 协议(protocol)的各个方面,包括 Authentication header ,他们建议不要更改此属性,但它似乎没有设置我。至少我希望对于 NSURLSession 对象,我只需要通过访问 sharedSession 并通过 setHTTPAdditionalHeaders 调用添加 header 信息来设置它一次,但它似乎不会在我下次访问 sharedSession 时保留信息.

我在这里遗漏了什么,或者我是否需要在所有调用中手动填充 HTTP header ?

编辑:
下面是一个代码片段,展示了我如何尝试为 session 设置 header 。

NSURLSession *session = [NSURLSession sharedSession];
NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration];

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
id jSONObj = [defaults objectForKey: kTokenInformation];
[config setHTTPAdditionalHeaders:@{@"Authorization": [NSString stringWithFormat:@"Bearer %@",[jSONObj valueForKeyPath:@"access_token"]]}];
session = [NSURLSession sessionWithConfiguration:config];

但是,下次我调用 [NSURLSession sharedSession] 时, token 似乎不存在。所以现在我每次调用共享 session 时都必须这样做。从文档中我也不确定您将如何处理维护多个 session 的应用程序,每个 session 可能都需要单独的 Auth token 。听到我想念的任何想法。

最佳答案

看看NSURLSessionConfiguration .

例如,您可以设置一个提供 NSURLSession 的单例类:

// Session setup
NSString *tokenString = ...;
NSURLSessionConfiguration *sessionConfiguration = [NSURLSessionConfiguration defaultSessionConfiguration];
[sessionConfiguration setHTTPAdditionalHeaders:@{ @"X-Auth-Token" : tokenString" }];
self.session = [NSURLSession sessionWithConfiguration:sessionConfiguration];

现在,每次您需要使用 session 发出请求时:

// Send Request
NSURLSession *session = [[SessionManager sharedManager] session];
[[session dataTaskWithURL:url
completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
}] resume];

这是一个很棒的教程:http://code.tutsplus.com/tutorials/networking-with-nsurlsession-part-1--mobile-21394

关于IOS - 处理 HTTP header 中的 token 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26830805/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com