在Microsoft Identity 2中,用户可以确认我从此处下载的Identity 2示例项目的电子邮件地址。在此项目中,用户确认他们的电子邮件之间没有任何区别,我不想告诉谁不确认的人他们的电子邮件无法登录,这是我尝试的方法:
public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
{
if (!ModelState.IsValid)
{
return View(model);
}
var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: true);
switch (result)
{
case SignInStatus.Success:
{
var user = await UserManager.FindByNameAsync(model.Email);
if (user != null)
{
if (!await UserManager.IsEmailConfirmedAsync(user.Id))
{
//first I tried this.
//return LogOff();
HttpContext.Server.TransferRequest("~/Account/LogOff");
return RedirectToAction("Login");
}
}
return RedirectToLocal(returnUrl);
}
case SignInStatus.LockedOut:
return View("Lockout");
case SignInStatus.RequiresVerification:
return RedirectToAction("SendCode", new { ReturnUrl = returnUrl });
case SignInStatus.Failure:
default:
ModelState.AddModelError("", "Invalid login attempt.");
return View(model);
我试图通过调用LogOff()操作方法来强制用户退出,但此操作不起作用,并且用户仍保持身份验证。然后尝试使用,Server.TransferRequest()
但不知道为什么执行此操作,但是它将用户重定向到带有returnUrl的登录页面=“帐户/注销”,所以在他们确认电子邮件并尝试登录后,他们注销了,我真的很困惑!这是我的LogOff()操作方法:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult LogOff()
{
AuthenticationManager.SignOut();
return RedirectToAction("About", "Home");
}
我已经用谷歌搜索了好几天没有运气了!!!!
也许有点晚了,但我希望它可以对其他人有所帮助。
加上这个
var userid = UserManager.FindByEmail(model.Email).Id;
if (!UserManager.IsEmailConfirmed(userid))
{
return View("EmailNotConfirmed");
}
之前
var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false);
第一段代码只是检查数据库中是否存在该模型中的电子邮件,并获取其ID以检查是否被确认,如果是,则向用户返回一个视图,并说是这样,如果被确认,则只允许用户签名在。
并像这样删除对结果开关的更改
switch (result)
{
case SignInStatus.Success:
return RedirectToLocal(returnUrl);
case SignInStatus.LockedOut:
return View("Lockout");
case SignInStatus.RequiresVerification:
return RedirectToAction("SendCode", new { ReturnUrl = returnUrl });
case SignInStatus.Failure:
default:
ModelState.AddModelError("", "Invalid login attempt.");
return View(model);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句