2

我正在构建一个多租户应用程序。当用户创建帐户时,他们需要输入电子邮件 + 密码。登录后,该用户(“管理员”)可以将其他用户添加到他们的帐户中。我希望能够简单地添加用户 - 只需要一个电子邮件地址。以下过程对于添加用户是否安全?

  1. 管理员转到添加用户表单
  2. 管理员输入用户的电子邮件地址并点击提交
  3. 电子邮件 + 唯一的registration_key + registration_expiration 被输入到用户模型中
  4. 新用户会收到一封包含注册链接的电子邮件(例如:http ://account.myapp.com/registration/o4iwerl23msl424keree )
  5. 新用户打开注册表并输入必填密码+密码确认字段
  6. 如果 URL 中的 registration_key 与 DB 中的匹配,并且在注册到期之前,则用户可以注册

你会推荐一个替代品吗?如果这是安全的,我如何绕过此过程的第 2 步和第 3 步中所需的密码 + 密码确认字段?

4

1 回答 1

2

对我来说似乎足够合理。

我会在用户模型中添加一个状态列。当您邀请某人时,他们的陈述将被邀请,直到他们单击注册链接并完成所有这些事情。

然后,您可以将密码验证(或在此阶段不相关的任何其他内容)设置为在这种情况下不适用

validates_presence_of :blah, :if => confirmed?

def confirmed?
  state == 'confirmed'
end

如果用户想查看哪些受邀用户成功注册,这也可能会派上用场。如果您的用户将有很多状态,您可能希望查看 aasm gem,但这将是矫枉过正。

于 2012-07-10T16:54:29.133 回答