Devise:如何使电子邮件确认令牌失效或取消?

问题描述 投票:0回答:3

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

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

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

场景:

  1. 现有用户更改了他们的电子邮件。
  2. 用户意识到他们刚刚向前妻发送了一封电子邮件。 :) 或者其他什么。
  3. 用户不希望前任控制他们的帐户。
  4. 用户快速取消程序,从而保护自己的安全。
ruby-on-rails security email devise
3个回答
6
投票

因为我不想取消用户的确认,所以我最终这样做了:

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

似乎有效。我将此方法放入我要包含在用户模型中的模块中,但是如果您这样做的话,您可以将其直接放入用户模型中。我想这很简单,但我想它会内置到 Devise 中。


2
投票

我认为 Devise 没有提供方法,但你可以自己这样做:

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

1
投票

是的,您可以在某种回调中手动将内容清空,然后重新发送确认指令。但是,您也可以使用 Devise 对可重新确认的支持来实现此目的,该支持可以在用户更改其电子邮件地址时使用。如果设置了此设置,则要求用户“重新确认”他们的帐户,您甚至可以延迟电子邮件更改,直到他们再次成功确认。

© www.soinside.com 2019 - 2024. All rights reserved.