Как я могу проверить наличие 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);
...
Другие вопросы по тегам