X-Auth-Token 在 1 个会话后无效
Posted
技术标签:
【中文标题】X-Auth-Token 在 1 个会话后无效【英文标题】:X-Auth-Token Invalid After 1 Session 【发布时间】:2015-04-29 09:10:27 【问题描述】:我正在 Xcode 中开发 ios 应用程序并使用 AFNetworking 与 API 对话 - API 使用“X-Auth-Token”。因此,当我登录并将会话令牌存储在用户默认值中时,它可以正常工作,直到重新启动应用程序 - 会话令牌由于某种原因不起作用?
令牌在 AFNetworking 中使用如下:
NSMutableDictionary *params = [[NSMutableDictionary alloc] init];
[params setValue:@"SessionTokenFromUserDefaults" forKey:@"X-Auth-Token"];
有人有什么建议吗? (PS:我在重启后使用token的时候从AFN得到的错误是:请求失败:未授权(401)
如果不登录每个会话,我怎么能做到这一点?
非常感谢!
【问题讨论】:
【参考方案1】:我记得在没有缓存策略的情况下使用 NSURLConnections 时遇到了这类问题。 我认为有一个thread here 可能会有所帮助。
【讨论】:
嗨,我收到了回复:pastebin.com/aVL5euzY - 有什么建议吗?谢谢(:【参考方案2】:服务器报Request failed: authorized (401) 很有可能是因为token是空的。
要调试,您可以在 AppDelegate 中添加这两行
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
[[AFNetworkActivityLogger sharedLogger] startLogging];
[[AFNetworkActivityLogger sharedLogger] setLevel:AFLoggerLevelDebug];
然后你可以检查你的日志中的请求,看看是否确实在header中设置了token。
【讨论】:
【参考方案3】:我找到了解决问题的方法 - 这是我使用的方法:
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager.requestSerializer setValue:sessionToken forHTTPHeaderField:@"X-Auth-Token"];
【讨论】:
以上是关于X-Auth-Token 在 1 个会话后无效的主要内容,如果未能解决你的问题,请参考以下文章
使Java HTTP会话无效以重定向到其他服务器,而无需将用户注销
使用访问令牌时,salesforce rest api 无效会话 id 错误