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 个会话后无效的主要内容,如果未能解决你的问题,请参考以下文章

更改密码后 Parse 中的会话令牌无效

FB登录后解析会话令牌无效

使Java HTTP会话无效以重定向到其他服务器,而无需将用户注销

使用访问令牌时,salesforce rest api 无效会话 id 错误

直接访问登录表单时未设置会话 cookie,导致 CSRF 令牌无效

如何检查会话是不是无效