设计电子邮件确认问题

时间:2012-02-20 06:16:34

标签: ruby ruby-on-rails-3 authentication devise

我是铁杆新手。我第一次使用Devise时遇到了一些奇怪的事情。如果这是一个Devise Bug或我的问题,请你告诉我吗?

我正在使用Devise 2.0.1

新用户注册后,电子邮件会发送到已注册的电子邮件地址。

案例1:

此部分正常

通过电子邮件链接确认后,他就可以访问整个网站。

案例2:

此部分不正常

我注册后,我立即没有点击确认链接,我进入登录页面并尝试使用刚刚创建的电子邮件帐户和密码登录,显示任何错误,它只是路由到sign_in页面。理想情况下,我希望它显示类似

的错误
"We have sent you an email. Please confirm. 
If you have not received them please ask for conformation instructions"

案例3:

此部分不正常

我注册后,点击忘记密码lnk。我输入我刚刚注册的电子邮件地址..我发送了一个重置​​密码说明。我最好不要重置密码说明,而是要向我发送错误"Email first has to been confirmed first in order to send reset password instructions."

期待您的帮助和支持。

由于

1 个答案:

答案 0 :(得分:2)

如果我需要让人们了解确认信息,我通常会在我的某个控制器中进行设置:

render :template => 'shared/unconfirmed' and return if current_user.confirmed? == false

这会阻止人们做任何事情,除非他们已经确认,限制要求决定我把它放在哪里。例如,如果要阻止人们在确认之前执行所有操作,请将其放在application_controller中的before_filter中。如果您希望它们停止创建帖子,请将其放在帖子控制器中。

要使其正常工作,您还应该更改devise.rb配置文件中“config.confirm_within”设置的默认值,以便让人们进入:

# ==> 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.confirm_within = 2.days