Как я могу проверить наличие TeamID при входе в систему и, если оно пустое, перенаправить имя входа на другую страницу?
Я использую идентичность 2.0, и поэтому логин и регистрация уже были настроены. Я добавил TeamID в таблицу AspNetUsers. При входе в систему, а также при проверке электронной почты и пароля я хочу, чтобы он проверил TeamID. Если TeamID имеет значение null, я хочу перенаправить его на страницу "Индекс", "Команды", чтобы пользователь выбирал команду. Если TeamID не нулевой, я хочу, чтобы он пошел на домашнюю страницу. Это код для входа
// 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);
}
}
1 ответ
Вам просто нужно найти пользователя по его электронной почте и проверить идентификатор команды, прежде чем войти в него:
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);
...