簡體   English   中英

解析服務器:處理代碼為 209“會話令牌已過期”的錯誤。 對於自動(匿名)用戶

[英]Parse Server: Handling errors with code 209 "Session token is expired." for automatic (anonymous) users

我的 iOS 應用程序使用 Parse Server 的自動用戶功能,即用戶不必提供登錄憑據,而是自動和匿名登錄。 這些不是從 Parse.com 遷移的用戶,而是由托管的 Parse Server 生成的具有可撤銷會話的自動用戶。

我們的客戶端 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];

在服務器上,“使非活動會話過期”為“是”,“密碼重置時撤銷會話”為“是”。 會話長度為 1 年(以秒為單位)。 就“過期非活動會話”而言,我不完全理解什么構成“非活動”會話,以及“過期”究竟是什么構成 - 從數據庫中刪除,或者只是使令牌無效。 在我看來,無論其他因素如何,會話在其開始后僅對“會話長度”保持有效。

基於這種理解,一切都按預期進行——用戶可以與數據庫通信——並且在 1 年標記處,會話令牌似乎自然過期。

我注意到在解析服務器的身份驗證選項卡“應用程序身份驗證設置”中,“啟用匿名身份驗證”實際上設置為否。 我的理解是,這只會讓用戶在沒有有效會話令牌或有效 PFUser 對象的情況下與 Parse 服務器通信。 這不是我們真正想要的 - 我們想要一個有效的匿名 PFUser 進行通信,因為我們稍后可能想要轉換為常規 PFUser。 我嘗試將其切換為 YES,但我們仍然看到相同的錯誤。

使用標准登錄流程,人們會清楚地顯示一個屏幕,允許用戶登錄並刷新他們的令牌。 但是,對於自動或匿名用戶來說,這是沒有意義的 - 他們從未輸入任何登錄憑據,因此他們無法手動刷新其憑據。

鑒於啟用了自動用戶,我希望 Parse Server 會自動為具有匿名憑據的用戶生成新的會話令牌。 相反,與服務器或數據庫的任何交互都會失敗:

錯誤域=解析代碼=209“會話令牌已過期。” UserInfo={代碼=209,臨時=0,錯誤=會話令牌已過期。,NSLocalizedDescription=會話令牌已過期。}

任何人都可以幫助我解決問題嗎?

我將 Parse Server v2.3.2 與 MongoDB v3.0.12 和 iOS Parse SDK v1.17.1 一起使用。 我可以考慮升級到最新版本,但我想先花時間了解問題所在,以及這是否/如何解決問題。

刪除應用程序並重新安裝它可以解決問題,因為會生成新的自動用戶並提供新的會話令牌。 在數據庫中,這顯示為一個全新的用戶,而舊用戶將永遠未使用。

我想實現一個解決方案,它只是為具有過期令牌的匿名用戶授予新的會話令牌。 似乎我必須設置一個有限的會話長度,我寧願不只是將它設置為 100 年——它不能解決現有用戶的問題,感覺就像一個黑客。

感謝您的幫助。

親切的問候,亞歷克斯

從 v2.8.0 或更低版本開始,這已被確認為 Parse Server 的已知問題。

臨時解決方案只是更新我們的數據庫並手動將 PFSession 對象中的所有“expiresAt”字段設置為未來的日期。 此外,我們將服務器設置中的“會話長度”增加到 3 年,以便為新用戶提供更大的緩沖。

同時,正在討論如何正確處理自動用戶的令牌到期問題,並且可能會在 Parse Sever 的未來更新中提供解決方案。 請參閱我的Parse Server Github 問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM