设计:如何使电子邮件确认令牌无效或取消?

时间:2013-09-10 02:50:06

标签: ruby-on-rails security email devise

在Devise 2.2.3和Rails 3.2.x中,我想创建一个例程,用户可以手动使他们可能发送到错误电子邮件地址的确认令牌/电子邮件无效。

我想我需要取消未经证实的电子邮件和确认令牌。这是对的吗?

我在Google或Devise文档中没有看到有关此过程的任何内容。

情景:

  1. 现有用户更改了他们的电子邮件。
  2. 用户意识到他们只是向前妻发送了一封电子邮件。 :)或者其他什么。
  3. 用户不希望ex控制他们的帐户。
  4. 用户快速取消程序,从而保护他们的安全。
  5. 谢谢!

3 个答案:

答案 0 :(得分:4)

由于我不想确认用户,我最终这样做了:

def cancel_change_email!
  self.confirmation_token = nil
  self.unconfirmed_email = nil
  self.save!
end

似乎工作。我把这个方法扔进了一个模块,我把它包含在用户模型中,但是你可以把它放到用户模型中,如果这就是你的滚动方式。我想这很容易,但我觉得它是内置于Devise。

答案 1 :(得分:1)

我不认为Devise为它提供了一种方法,但你可以自己这样做:

user = User.find(1)
user.confirmation_token = nil
user.confirmed_at = nil
user.save!

答案 2 :(得分:1)

是的,您可以在某种回调中手动填写内容,然后重新发送确认说明。但是,您也可以使用Devise对可重新配置的支持来实现这一点,这可以在用户更改其电子邮件地址时使用。如果设置了此项,则用户需要“重新确认”他们的帐户,您甚至可以延迟电子邮件更改,直到他们再次成功确认。