2009-09-10 3 views
0

Я пытаюсь использовать forms.signout, но иногда он не выходит из системы, и он все еще может продвигаться по сайту.ASP.NET MVC FormsAuthentication.SignOut не работает

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

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

Спасибо!

ответ

1

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

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

    Response.Cache.SetExpires (DateTime.UtcNow. AddMinutes (-1)); Response.Cache.SetCacheability (HttpCacheability.NoCache); Response.Cache.SetNoStore();

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

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

+0

Например, на веб-сайте есть меню для начинающих, которое отображается только при аутентификации пользователя. И у меня также есть Request.IsAuthenticated для создания некоторого ограниченного содержимого (например, меню). Когда пользователь выходит из системы, меню иногда остается видимым. Если я попытаюсь получить доступ к странице ограничения, я буду перенаправлен на страницу входа, но я не думаю, что хорошо видеть этот кешированный контент, например меню. – AndreMiranda

0

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

+0

@tvanfosson - Как проверить, не является ли пользователь анонимным? – AndreMiranda

+0

Request.LoginUserIdentity.IsAnonymous должен быть ложным. – tvanfosson

Смежные вопросы