私はこれに遅れていることは知っていますが、私はそれ以前に自分自身で探していました。
GenerateChangeEmailTokenAsyncメソッドは、新しい電子メールをトークンのハッシュの一部として受け取ります。 次はあなたが電子メールでユーザーにこのリンクを送信トークンが含まれているリンク、新しい電子メールや古いメール
var token = await _userManager.GenerateChangeEmailTokenAsync(user, model.NewEmail);
var resetLink = Url.Action("ChangeEmailToken", "account", new {token = token, oldEmail = user.Email, newEmail = model.newEmail }, protocol: HttpContext.Request.Scheme);
次を作成します。
クリックすると、ユーザーはAccountController上(ここでは「ChangeEmailToken」リンクで指定された方法を打つ:
[AllowAnonymous]
[HttpGet]
public async Task<IActionResult> ChangeEmailToken([FromQuery] string token, [FromQuery] string oldEmail, [FromQuery] string newEmail)
次あなたはトークンを検証する必要がある、と-ifはメールアドレスをアップデートsuccesful-
。
var result = await _userManager.ChangeEmailAsync(user, newEmail, token);
はい、これは私が紛失している部分ですが、新しい電子メールアドレスを確認する方法です。新しいアドレスはどこにも保存されていないので、トークンを含むリンクをクリックするとアプリケーションは何もわかりません新しいアドレスです。そのメールアドレスはどのように取得すればよいですか? –
アカウントには電子メールのフィールド/カラムが必要です。これは、アカウントの登録/作成時に電子メールアドレスを保存した場所です。それから私は上記のように。彼らがアカウントを更新し、電子メールアドレスが変更された場合、電子メールの確認プロセスを進めます。 – Nkosi
電子メールの列は、電子メールのリンクをクリックするまで変更されません。これにより、新しい電子メールを確認するのを待っている間にアカウントから孤立していないことが保証されます。これは、新しい電子メールがDB内のどこにも格納されていないことを意味します。私は未確認の電子メールの新しい列を追加するのが最善の方法だと考えています。そして、リンクをクリックすると、それを引っ張ります。 –