Asp.net mvc 5 如何在登录时检查TeamID,如果为空,则将登录重定向到另一个页面?
我正在使用identity 2.0,因此已设置登录和注册。我在AspNetUsers表中添加了一个TeamID。当登录以及检查电子邮件和密码时,我希望它检查TeamID。如果TeamID为null,我想将其重定向到“索引”、“团队”页面,以便用户选择一个团队。如果TeamID不为空,我希望它转到主页。这是登录的代码Asp.net mvc 5 如何在登录时检查TeamID,如果为空,则将登录重定向到另一个页面?,asp.net-mvc-5,identity,Asp.net Mvc 5,Identity,我正在使用identity 2.0,因此已设置登录和注册。我在AspNetUsers表中添加了一个TeamID。当登录以及检查电子邮件和密码时,我希望它检查TeamID。如果TeamID为null,我想将其重定向到“索引”、“团队”页面,以便用户选择一个团队。如果TeamID不为空,我希望它转到主页。这是登录的代码 // POST: /Account/Login [HttpPost] [AllowAnonymous] [ValidateAntiFo
// POST: /Account/Login
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
{
if (!ModelState.IsValid)
{
return View(model);
}
//This doesn't count login failures towards account lockout
//To enable password failures to trigger account lockout, change to shouldLockout: true
var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false);
switch (result)
{
case SignInStatus.Success:
return RedirectToLocal(returnUrl);
case SignInStatus.LockedOut:
return View("Lockout");
case SignInStatus.RequiresVerification:
return RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe });
case SignInStatus.Failure:
default:
ModelState.AddModelError("", "Invalid login attempt.");
return View(model);
}
}
//POST:/Account/Login
[HttpPost]
[异名]
[ValidateAntiForgeryToken]
公共异步任务登录(LoginView模型,字符串返回URL)
{
如果(!ModelState.IsValid)
{
返回视图(模型);
}
//这不会将登录失败计入帐户锁定
//要使密码失败触发帐户锁定,请更改为shouldLockout:true
var result=wait SignInManager.PasswordSignInAsync(model.Email、model.Password、model.RememberMe、shouldllockout:false);
开关(结果)
{
案例标志状态成功:
返回重定向到本地(returnUrl);
案例标志状态锁定输出:
返回视图(“锁定”);
案例标志状态。要求验证:
return RedirectToAction(“SendCode”,new{ReturnUrl=ReturnUrl,RememberMe=model.RememberMe});
案例信号状态故障:
违约:
AddModelError(“,”登录尝试无效“);
返回视图(模型);
}
}
在用户登录之前,您只需通过其电子邮件查找用户并检查团队ID即可:
var user = await UserManager.FindByEmailAsync(model.Email);
if (user != null && !user.TeamID.HasValue)
{
return RedirectToAction("Index", "Teams");
}
//This doesn't count login failures towards account lockout
//To enable password failures to trigger account lockout, change to shouldLockout: true
var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false);
...
谢谢你的回答,这部分是有效的。它会检查id,如果没有id但用户没有登录,它会将我重定向到Teams页面。我希望用户即使没有TeamID也能登录,这样他们就可以选择一个。成功登录后,只需将代码移动到即可。