ASP.NET Проверка подлинности форм MVC.Выход из системы не работает
-
05-07-2019 - |
Вопрос
Я пытаюсь использовать forms.signout, но иногда это не выводит пользователя из системы, и он все еще может перемещаться через веб-сайт.
Как я могу решить эту проблему?Я также настроил аутентификацию web.config forms, но она по-прежнему не работает.
Я использую FormsAuthentication для аутентификации пользователя, передающего свой логин.
Спасибо!!
Решение
Я не знаю, в чем причина, но есть несколько вещей, которые вы могли бы рассмотреть / попробовать
действительно ли они все еще могут посещать страницы, сгенерированные сервером, или они просто возвращаются к локально кэшированным версиям?Что происходит, когда они вызывают обратную отправку, в которой есть код для проверки того, аутентифицированы ли они, работает это или сбой?Я думаю, что более позднее значение означает, что они вышли из системы, но просматривают кэшированные версии страницы входа в систему, и в этом случае вы хотите дать указание клиенту не кэшировать страницы, использующие for instances:
Ответ.Кэш.SetExpires(дата-время.UtcNow.Добавить минуты(-1));Ответ.Кэш.Установить возможность кэширования (HttpCacheability.NoCache);Ответ.Кэш.SetNoStore() Установить хранилище();
Вы можете попробовать вручную установить срок действия файла cookie истекшим, но это взлом
Проверка подлинности форм.Выход из системы();Контекст.Ответ.Файлы cookie.Элемент (проверка подлинности формы.FormsCookieName).Срок действия = Дата.Сейчас;Ответ.Перенаправление("~/Somewhere.aspx");
Другие советы
Есть ли у пользователя домен (или родительский домен) на своих доверенных сайтах или сайтах интрасети?Недавно я столкнулся с некоторыми проблемами, когда пользователь проходит проверку подлинности, но анонимен при обстоятельствах, когда это верно.В моем случае также могло случиться так, что родительский сайт когда-то был настроен на разрешение встроенной проверки подлинности Windows.С тех пор я удалил это, но, похоже, это не помогло решить проблему.Я еще не перезапускал IIS, чтобы посмотреть, возымеет ли это эффект.Я прибегнул к проверке того, что пользователь аутентифицирован и не является анонимным, чтобы убедиться, что отображаются правильные части представления.Это на самом деле более точно, даже несмотря на то, что мой код входа в систему должен предотвращать анонимный вход в систему.