批准已激活的分阶段用户会提示他们登录,但实际上不允许他们登录

复现步骤

  1. 访问 /my/messages
  2. 点击“新消息”
  3. 输入一个未关联任何现有用户的电子邮件地址
  4. 输入并发送消息。

这将发送一封电子邮件并创建一个待激活的用户。

  1. 从管理面板激活该用户。
    a. 在我的案例中,我的网站需要批准新账户,因此我还必须批准该用户。不确定这是否普遍适用。

  2. 用户收到电子邮件:
    \u003e 您已在 … 获得批准
    \u003e
    \u003e 一名工作人员已在 … 批准了您的账户
    \u003e
    \u003e 您现在可以通过访问以下地址登录您的新账户:\u003csiteurl\u003e

  3. 用户按照电子邮件中的说明访问该网址。

预期结果

用户可以成功登录

实际结果

  • 在登录对话框中,输入其电子邮件地址并使用“跳过密码;向我发送登录链接”时,会提示“没有匹配到账户 …"。

  • 点击“忘记密码”然后“重置密码”,也会提示“没有匹配到账户 …"。

  • 用户可以使用该电子邮件地址创建一个新账户,但(至少在我的测试中)这会将他们重置为未激活状态,并发送一封“确认您的新账户”的电子邮件。这在他们已经被告知“您已获得批准”之后,并不是预期的结果…

额外的问题:我第一次在 Discourse 上发送消息时,其中包含一个邀请链接。用户无法使用该邀请链接:

我已在不包含邀请链接的情况下复现了该问题,因此在复现步骤中未提及。但我在此说明,因为这似乎是另一个线索,可能有助于查明我究竟将账户置于何种异常状态。

有趣的是,你竟然可以通过用户管理页面激活预注册用户。预注册用户本不应登录,因此能够激活他们似乎不太合理。预注册用户可以通过自行创建账户转变为正式用户,之后他们便能访问此前仅通过邮件参与的所有消息。

所以……给你的一个建议是:不要这样做。:slight_smile: 当你想邀请某人访问你的网站时,只需按常规方式邀请即可,无需通过邮件创建预注册用户。

不过,我们或许可以阻止这种行为,以防其他人遇到同样的问题。我会在自己的网站上快速测试一下,看看能否复现该问题。

1 个赞

好的,我已经在自己的网站上复现了这个问题。确实可以激活处于暂存状态的用户,这是不正确的。发现得很及时!

2 个赞

这很有道理!

我已经确认,对于尚未激活的暂存用户,这种方式运行良好。如果我最初的消息之后直接发送邀请(即“限制为此电子邮件地址”,然后点击“发送邀请邮件”按钮)给这些邮箱地址,他们只需点击邀请链接即可创建账户。

但我无法对已激活的暂存用户执行此操作:在这种情况下,尝试邀请他们会失败,因为该电子邮件地址已关联到一个用户账户。

不过,由于暂存用户本就不应被激活,所以这应该不是问题 :slight_smile:

这当然是一个“限制使用次数为 N 次”的邀请。我不确定这是否会影响邀请链接的使用——但根据我们已有的发现,我怀疑如果我没有提前激活这些账户,该邀请链接原本是可以正常工作的。

1 个赞