当 Parse.com 创建一个 sessionToken 时,如果它过期了怎么办?

When Parse.com creates a sessionToken and what if this is expired?

在 class _Session 的解析仪表板中,正在保存所有 sessionTokens。 以下操作似乎触发了创建:

第一个问题是:有没有其他的action会创建一个新的session Token?

并且:我看到所有令牌都有一个 expiresAt 字段。始终在令牌 createdAt 后 1 年设置。我可以延长这段时间(例如延长至 2 年)吗?

最后:如果这个token过期了,用户使用了我的app,会发生什么?该应用程序将需要重新登录(因此将创建一个新令牌)?

纠正动作。

Parse-server 允许在初始化时使用高级选项。使用 sessionLength 设置您的到期日期。
如果您使用环境变量,它将是 PARSE_SERVER_SESSION_LENGTH.

sessionLength - 会话有效的时间长度(以秒为单位)。默认为 31536000 秒(1 年)。

取决于你在客户端做什么。如果会话已过期,您可以强制注销。

另请注意,当尝试 运行 具有过期会话的云代码时,将显示以下错误:{"code":209,"message":"Session token is expired."}

我刚刚遇到这个问题,想在已接受的答案的基础上进一步发展。

  1. 是的,默认的 sessionLength 是 1 年,但可以通过传递到 ParseServer 对象的构造函数中的配置参数来延长。

  2. 使用匿名帐户时,这是一场灾难。根据设计,用户无法在会话过期后重新进行身份验证,因此他们只会丢失所有数据。

  3. 阅读 Parse Server 源代码我发现了另一个配置设置 expireInactiveSessions,它默认为 true。我能够将该配置选项作为 false 传递,现在 Session 集合上的 expiresAtundefined。现在匿名用户会话永不过期。

  4. 就我而言,我使用匿名用户,但允许用户使用电子邮件身份验证创建真实帐户。不幸的是,现在这些会话也永远不会过期。我没有尝试过,但我认为您可以在 Session 集合上设置一个触发器,为基于电子邮件的帐户提供一个过期时间,并让匿名会话永不过期。这将是理想的解决方案。