Я знаю, что этот вопрос задавался раньше дюжину раз, но я не могу понять его. Я создаю веб-приложение в ASP. NET Framework v 4.7.2 и хочу отправить пользователя для входа на странице, если пользователь не аутентифицирован. Это код контроллера:
[HttpPost]
public ActionResult Authenticate(LogInModel lim)
{
LogInValidation.Validate(lim.UserName, lim.Password);
if (!LogInValidation.ValidCredentials)
{
TempData["CustomError"] = "Username or password invalid !";
return RedirectToAction("LogIn");
}
else
{
return RedirectToAction("Sesion");
}
}
public ActionResult LogIn()
{
if (TempData["CustomError"] != null)
{
ModelState.AddModelError("CustomError", TempData["CustomError"].ToString());
}
return View();
}
public ActionResult Session()
{
return View();
}
Я проверяю пароль пользователя и имя пользователя, и если они находятся в базе данных, я перенаправляю их в Session View. Если нет, я перенаправляю их на страницу входа в систему. Я хочу, чтобы пользователь мог получить доступ к странице сеанса, только если она аутентифицирована. Что я пробовал: Я вставил xml в web.config:
<authentication mode="Forms">
<forms loginUrl="~/Home/LogIn" timeout="2880" />
, и я также добавил атрибут [Authorize] в Session Action.But. теперь, если я пытаюсь войти, я всегда перенаправлен на страницу входа, а не на сессию. У меня также есть другие страницы, кроме страницы входа в систему, к которым пользователи могут получить доступ перед входом в систему, поэтому блокировка доступа всех пользователей ко всем страницам, кроме страницы входа в систему в начале, не будет работать.