ASP.NET 身份回滚未验证的电子邮件更改
ASP.NET Identity rollback unverified email change
目前这是一个没有代码的一般性问题,因为我正在为我的问题寻找最佳实践示例:
- 用户发出电子邮件更改请求。 (完成)
- 一封 link 被发送到新地址以确认新电子邮件。 (完成)
- 用户点击确认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();
}
}
目前这是一个没有代码的一般性问题,因为我正在为我的问题寻找最佳实践示例:
- 用户发出电子邮件更改请求。 (完成)
- 一封 link 被发送到新地址以确认新电子邮件。 (完成)
- 用户点击确认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();
}
}