У меня есть приложение MVC, которое использует [Авторизовать] для защиты частных битов. Когда я выбираю URL SignOut(), он меня выписывает, но если я нажму кнопку «Назад» в своем браузере, он перейдет на защищенную страницу и даже позволит мне использовать форму. Действие происходит, а затем оно показывает, что я вышел из системы. Проблема в том, что он выполняет защищенное действие (вставка строки в мою базу данных). Затем я снова могу использовать кнопку «Назад» и делать все это. Если я использую кнопку «Назад» после выхода из системы и нажимаю обновление браузера, он показывает, что я вышел из системы и отказывается от доступа к защищенной странице.Использование кнопки браузера после того, как SignOut() позволяет получить доступ к защищенной странице (ASP.NET MVC)
Я пропустил что-то важное? Похоже, что это может быть действительно серьезная проблема безопасности.
public ActionResult LogOff(string ReturnUrl)
{
FormsAuth.SignOut();
if (!String.IsNullOrEmpty(ReturnUrl))
{
return Redirect(ReturnUrl);
}
else
{
return RedirectToAction("Index", "Page");
}
}
Вы забыли обернуть [Авторизовать] вокруг действия, которое принимает сообщение (выше [AcceptVerbs (HttpVerbs.Post)]? – Langdon
Нет, но когда я вернулся, чтобы посмотреть у меня было так: \t \t [AcceptVerbs (HttpVerbs.Get)] \t \t [Авторизоваться (Роли = "Администратор")] и \t \t [AcceptVerbs (HttpVerbs ,Post)] \t \t [Авторизовать (Роли = «Администратор»)] Когда я добавляю флаг Authorize перед AcceptVerbs для Get и Post, он все же позволяет мне вернуться к форме, но это не позволит мне публиковать его , – mark123
Мне все еще хотелось бы не показывать безопасную форму, разрешает ли она отправлять сообщения обратно или нет. Это странная проблема. С помощью [Авторизованного] оформления мне не нужно проверять наличие IsAuthenticated, должен ли я? \t \t \t if (! User.Identity.IsAuthenticated) {return RedirectToAction («LogOn», «Account»);} – mark123