我终于可以在我的MVC 5应用程序上发送电子邮件确认
用户现在收到一封电子邮件,并且EmailConfirmed字段从False更新为True。但是,用户仍然可以在不确认电子邮件的情况下登录。
我的问题是如何在用户确认电子邮件链接
之前限制访问权限以下是我的ConfirmEmail方法。
// GET: /Account/ConfirmEmail
[AllowAnonymous]
public async Task<ActionResult> ConfirmEmail(string Token, string Email)
{
ApplicationUser user = this.UserManager.FindById(Token);
if (user != null)
{
if (user.Email == Email)
{
user.EmailConfirmed = true;
await UserManager.UpdateAsync(user);
//await SignInAsync(user, isPersistent: false);
return RedirectToAction("Index", "Home", new { ConfirmedEmail = user.Email });
}
else
{
return RedirectToAction("Confirm", "Account", new { Email = user.Email });
}
}
else
{
return RedirectToAction("Confirm", "Account", new { Email = "" });
}
}
[AllowAnonymous]
public ActionResult Confirm(string Email)
{
ViewBag.Email = Email; return View();
}
感谢大家的阅读。
塞西
-----更新------
我将以下代码添加到/ Account / Login Controller
var user = await UserManager.FindByNameAsync(model.UserName);
if(user != null){
if (!await UserManager.IsEmailConfirmedAsync(user.UserName)) {
return View("ErrorNotConfirmed");
}
}
但是它返回了一个错误。 UserId未找到。
答案 0 :(得分:0)
我发布此代码以防有人需要它。
基本上我用以下代码替换了上面的代码:
var userid = UserManager.FindByEmail(model.UserName).Id;
if (!UserManager.IsEmailConfirmed(userid))
{
return View("EmailNotConfirmed");
}
它现在很漂亮。