2

我在我的用户模型中使用设计:可确认。

我的要求是注册/注册后,用户应成功登录(无需确认),并且确认链接也发送到用户的电子邮件。

在第二次如果用户没有确认他的帐户,不应该登录。

如何实现这个目标?

谢谢

4

2 回答 2

6

为了准确地实现您正在寻找的东西,您需要在覆盖 Devise确认控制器会话控制器时创造一些魔力。如果您选择走这条路,在他们的Wiki页面上有许多覆盖 Devise 控制器的示例。通过启用该:trackable模块,您将sign_in_count可以使用它来检查并只允许一个,直到它们被确认。

但是,我想提供一个您可能会接受的更简单的解决方案。如果您查看devise.rb 初始化程序文件,从第 122 行开始,您将看到您可以在一段时间内允许未经确认的访问您的应用程序。

# ==> Configuration for :confirmable
# A period that the user is allowed to access the website even without
# confirming his account. For instance, if set to 2.days, the user will be
# able to access the website for two days without confirming his account,
# access will be blocked just in the third day. Default is 0.days, meaning
# the user cannot access the website without confirming his account.
# config.allow_unconfirmed_access_for = 2.days

我认为最终,启用此功能并将其设置为您的应用程序可以接受的设置将是更好的方法,无论是从开发人员和最终用户的角度来看。我还会确保在第 34 行的语言环境send_instructions中放置一些内容,以通知用户在他们必须通过电子邮件确认其帐户之前,他们有 x 小时/天可以使用该视线。

于 2012-07-18T13:04:12.787 回答
3

最简单的方法是您指出config.allow_unconfirmed_access_for = 2.minutes,以便在注册后立即登录,但两分钟后,他将无法登录,除非他在两分钟内退出并登录。

于 2012-08-10T05:02:31.610 回答