ASP.NET MVC FormsAuthentication.SignOut не работает

Я пытаюсь использовать form.signout, но иногда пользователь не выходит из системы, и он все еще может перемещаться по веб-сайту.

Как я могу решить эту проблему? Я также настроил аутентификацию форм web.config, но она все еще не работает.

Я использую FormsAuthentication для аутентификации пользователя, передающего его логин.

Спасибо!!


person André Miranda    schedule 10.09.2009    source источник


Ответы (2)


Я не знаю, в чем причина, но несколько вещей, которые вы могли бы рассмотреть/попробовать

  • действительно ли они все еще могут посещать страницы, сгенерированные сервером, или они просто возвращаются к локально кэшированным версиям? Что происходит, когда они вызывают обратную передачу, в которой есть код для проверки того, аутентифицированы ли они, работает ли это или нет? Я думаю, что более позднее значение означает, что они вышли из системы, но просматривают кэшированные версии зарегистрированной страницы, и в этом случае вы хотите указать клиенту не кэшировать страницы, используя for instances:

    Response.Cache.SetExpires(DateTime.UtcNow.AddMinutes(-1)); Response.Cache.SetCacheability(HttpCacheability.NoCache); Ответ.Кэш.SetNoStore();

  • Вы можете попробовать вручную установить срок действия файла cookie, но это хак

    FormsAuthentication.SignOut(); Context.Response.Cookies.Item(FormsAuthentication.FormsCookieName).Expires = Date.Now; Response.Redirect("~/Somewhere.aspx");

person olle    schedule 10.09.2009
comment
Например, на веб-сайте есть меню навигации, которое отображается только после аутентификации пользователя. И у меня также есть Request.IsAuthenticated для создания некоторого ограниченного содержимого (например, меню). Когда пользователь выходит из системы, меню иногда все еще видно. Если я попытаюсь получить доступ к странице с ограничениями, я буду перенаправлен на страницу входа в систему, но я не думаю, что хорошо видеть этот кешированный контент, такой как меню. - person André Miranda; 10.09.2009

Есть ли у пользователя домен (или родительский домен) на доверенных сайтах или сайтах интрасети? Недавно я столкнулся с некоторыми проблемами, когда пользователь аутентифицирован, но анонимен при обстоятельствах, когда это верно. В моем случае это также может быть связано с тем, что родительский сайт был когда-то настроен для разрешения встроенной аутентификации Windows. Я удалил с тех пор, как удалил это, но, похоже, это не помогло проблеме. Я еще не перезапустил IIS, чтобы посмотреть, будет ли это иметь эффект. Я прибегал к проверке того, что пользователь аутентифицирован и не является анонимным, чтобы убедиться, что отображаются правильные части представления. Это на самом деле более точно, хотя мой код входа должен предотвращать анонимный вход в систему.

person tvanfosson    schedule 10.09.2009
comment
@tvanfosson - Как я могу проверить, является ли пользователь неанонимным? - person André Miranda; 10.09.2009
comment
Request.LoginUserIdentity.IsAnonymous должен иметь значение false. - person tvanfosson; 10.09.2009