Я работаю над проектом asp.net mvc5, моя проблема заставляет пользователя войти в систему, после чего они могут что-то делать на моем сайте. Я использую сеанс для проверки входа пользователя или нет (я не использую идентификатор или авторизацию). Вот мой Войти код:Как я могу принудительно ввести логин пользователя перед тем, как перейти в любое место в моем приложении?
[HttpPost]
public ActionResult Login(User user)
{
if (IsValid(user.username, user.password))
{
Session["username"] = user.username;
return RedirectToAction("Index", "Home");
}
else
{
ModelState.AddModelError("", "Login details are wrong.");
}
return View(user);
}
я могу проверить логин пользователя или не с сессией, но я не могу отказать пользователю доступ к ссылке, если я должен сделать это вручную, мне нужно будет добавить код блока ниже для любого действия в каждом контроллере, который у меня есть.
public ActionResult Index()
{
if (Session["username"] != null)
{
//then user can go anywhere with any link
}
else
{
//user cannot go to here without login
}
}
Существует ли способ заставить пользователя для перенаправления на страницу входа в систему (если они не войти в систему) при нажатии на любую ссылку или введите ссылку в браузере? Я искал конфигурацию маршрута или конфигурацию фильтра, но, похоже, это не решило мою проблему. Я надеюсь, что есть общий способ сделать это, не добавляя контрольный код вручную каждому контроллеру/действию.
Спасибо, что прочитали мою проблему, я буду очень благодарен за любые комментарии, которые помогут мне решить эту проблему.
Попробуйте перенаправить его на стартовую страницу, если сеанс отсутствует. – WasteD
@WasteD Я могу проверить и перенаправить пользователя на страницу входа, но мне нужно скопировать код входа обнаружения на любой контроллер или действие, которое может принести пользователь. Это будет окончательный путь, если я не смогу это решить. Мне нужно знать, есть ли вообще более общий, чем мой указанный код. В любом случае, Спасибо, что ответили мне! –