gpt4 book ai didi

ios - 解析服务器 : Handling errors with code 209 "Session token is expired." for automatic (anonymous) users

转载 作者:行者123 更新时间:2023-12-01 16:14:16 27 4
gpt4 key购买 nike

我的 iOS 应用程序使用 Parse Server 的自动用户功能,即用户不必提供登录凭据,而是自动匿名登录。这些不是从 Parse.com 迁移的用户,而是具有托管 Parse Server 生成的可撤销 session 的自动用户。

我们的客户端 Parse 初始化看起来像这样:

[Parse initializeWithConfiguration:[ParseClientConfiguration configurationWithBlock:^(id<ParseMutableClientConfiguration> _Nonnull configuration) { 
configuration.applicationId = <our app id>;
configuration.clientKey = <our client key>;
configuration.server = <our server>; }]];

// Users
[PFUser enableRevocableSessionInBackground];
[PFUser enableAutomaticUser];
[PFACL setDefaultACL:[PFACL ACL] withAccessForCurrentUser:YES];

在服务器上,“使非事件 session 过期”为"is",“密码重置时撤销 session ”为"is"。 session 长度为 1 年(以秒为单位)。就“使非事件 session 过期”而言,我不完全理解“非事件” session 的构成,以及“过期”的确切构成-从数据库中删除,或者只是使 token 无效。在我看来,无论其他因素如何, session 在开始后仅对“ session 长度”仍然有效。

基于这种理解,一切都按预期工作 - 用户可以与数据库通信 - 并且在 1 年标记时, session token 似乎自然过期。

我注意到在 Parse Server 的身份验证选项卡“App 身份验证设置”中,“启用匿名身份验证”实际上设置为 NO。我的理解是,这只会让用户在没有有效 session token 或有效 PFUser 对象的情况下与 Parse 服务器通信。这并不是我们真正想要的——我们想要一个有效的匿名 PFUser 进行通信,因为我们稍后可能想要转换为一个普通的 PFUser。我已尝试将其切换为"is",但我们仍然看到相同的错误。

使用标准的登录流程,人们会清楚地显示一个屏幕,允许用户登录并刷新他们的 token 。但是,对于自动或匿名用户,这没有任何意义 - 他们从未输入任何登录凭据,因此他们无法手动刷新凭据。

鉴于启用了自动用户,我原以为 Parse Server 会自动为具有匿名凭据的用户生成一个新的 session token 。相反,与服务器或数据库的任何交互都会失败:

Error Domain=Parse Code=209 "Session token is expired." UserInfo={code=209, temporary=0, error=Session token is expired., NSLocalizedDescription=Session token is expired.}

谁能帮我解决一下?

我将 Parse Server v2.3.2 与 MongoDB v3.0.12 和 iOS Parse SDK v1.17.1 一起使用。我可以考虑升级到最新版本,但我想先花时间了解问题所在,以及这是否/如何解决问题。

删除应用程序并重新安装它可以解决问题,因为会生成一个新的自动用户并提供一个新的 session token 。在数据库中,这显示为一个全新的用户,而旧用户则永远处于未使用状态。

我想实现一个解决方案,该解决方案只需为 token 已过期的匿名用户授予新的 session token 。似乎我必须设置一个有限的 session 长度,我宁愿不只是将它设置为 100 年——它不能解决现有用户的问题,而且感觉像是一个 hack。

感谢您的帮助。

亲切的问候,亚历克斯

最佳答案

自 v2.8.0 或更早版本起,这已被确认为 Parse Server 的已知问题。

临时解决方案只是更新我们的数据库并手动将 PFSession 对象中的所有“expiresAt”字段设置为将来的日期。此外,我们已将服务器设置中的“ session 长度”增加到 3 年,以便为新用户提供更大的缓冲。

与此同时,正在讨论如何正确处理自动用户的 token 过期问题,并且可能会在 Parse Sever 的 future 更新中提供解决方案。请看我的Parse Server Github Issue .

关于ios - 解析服务器 : Handling errors with code 209 "Session token is expired." for automatic (anonymous) users,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50624881/

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