ASP.NET 身份回滚未验证的电子邮件更改

ASP.NET Identity rollback unverified email change

目前这是一个没有代码的一般性问题,因为我正在为我的问题寻找最佳实践示例:

  1. 用户发出电子邮件更改请求。 (完成)
  2. 一封 link 被发送到新地址以确认新电子邮件。 (完成)
  3. 用户点击确认link,数据库更新完成。 (完成)

还需要发生的是,当发送更改确认 link 时,还应向原始电子邮件地址发送一封电子邮件,用户可以在其中单击 link 来撤销出于任何原因的过程。我还认为,即使新的电子邮件地址被接受,如果原始 link 拒绝更改,它会恢复,并且 2) 如果原始电子邮件恢复,然后新电子邮件 link 得到确认,那么然后请求将被拒绝。

任何关于此事的指导或代码将不胜感激。

似乎数据库用户记录中的一个简单位字段就足够了,或者关联的数据库记录也可以。发送两封电子邮件后,为该用户标记该字段,我们将其称为 "ChangeEmailSent" 到 1。单击任一电子邮件时,该字段应更新为 0。电子邮件的实际更改应仅在该字段发生时发生是 1.

一些伪代码,如果你喜欢

private void CancelEmailChange(email)
{
    var user = Database.GetUser(email);
    user.ChangeEmailSent = false;
    Database.Save();
}

private void ProcessEmailChange(email)
{
    var user = Database.GetUser(email);
if (user.ChangeEmailSent)
{
    user.email = getNewEmailAddress();  //whatever logic for a new email
    user.ChangeEmailSent = false;
    Database.Save();
}

}