Пользователь после регистрации, он отправит электронное письмо с подтверждением на электронный адрес пользователя, введя следующий код
// POST api/Account/Register
[AllowAnonymous]
[System.Web.Mvc.ValidateAntiForgeryToken]
[Route("Register")]
public async Task<IHttpActionResult> Register(RegisterBindingModel model)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
var user = new ApplicationUser() { UserName = model.Email, Email = model.Email, PhoneNumber = model.PhoneNumber };
IdentityResult result = await UserManager.CreateAsync(user, model.Password);
if (!result.Succeeded)
{
return GetErrorResult(result);
}
#region Added Code for Send Email
string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);
code = HttpUtility.UrlEncode(code);
try
{
string callbackUrl = Url.Link("DefaultApi", new { controller = "Account/ConfirmEmail", userId = user.Id, code = code });
await UserManager.SendEmailAsync(user.Id, "Confirm your account", "Please confirm your account by clicking <a href=\"" + callbackUrl + "\">here</a>");
}
catch (Exception ex)
{
}
#endregion
return Ok();
}
Затем пользователь получит электронное письмо
Затем, когда пользователь щелкает изображение, он вызывает метод verifyEmail для AccountController api
[Route("ConfirmEmail")]
[AllowAnonymous]
[HttpGet]
public async Task<IHttpActionResult> ConfirmEmail(string userId, string code)
{
if (userId == null || code == null)
{
return NotFound();
}
code = HttpUtility.UrlDecode(code);
var result = await UserManager.ConfirmEmailAsync(userId, code);
return Ok(result.Succeeded ? "ConfirmEmail" : "ErrorEmail");
}
, который возвращается, как показано на рисунке ниже.
<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">ConfirmEmail</string>
Примечание
Я хочу отобразить на странице просмотра.Я не хочу отображать так.
Могу ли я сделать перенаправление на другой вид контроллера, если результат будет успешным?.