2014-01-29 3 views
3

Как часть моего входа пользователя в процессе/выхода из системы моего веб-страницы (с помощью стандартного модуля аутентификации MVC) У меня есть следующие на мой взгляд:Request.IsAuthenticated возвращает ложь, если страница не обновилась

if (Request.IsAuthenticated) 
{ 
    //logoff 
} 
else 
{ 
    //logon 
} 

Однако, когда мой пользователь регистрируется успешно и возвращается на эту страницу (просмотреть) назад, Request.IsAuthentgicated getter равен false, если я не обновляю свою страницу, а затем равен true и работает как ожидалось.

Может ли кто-нибудь объяснить, почему это так и как его можно исправить, не перезагружая мою страницу?

+0

возможно дубликат [Почему Request.IsAuthenticated ложно] (http://stackoverflow.com/questions/9528900/why-request-isauthenticated-is-false). Это в основном сводится к тому, что когда запрос выполнен (POST в форме входа в систему), пользователь не прошел аутентификацию из-за отсутствия cookie аутентификации. –

+0

Другой вопрос не дает полного представления о том, как решить эту проблему. Есть идеи? – Omri

+0

Ответ на этот вопрос предполагает создание модели представления с определением того, является ли запрос аутентифицированным, а не с использованием 'Request.IsAuthenticated'. После успешного входа в систему вы можете явно установить свойство 'true'. Я - однако - не знаю, как это реализовать. Возможно, вам нужно что-то вроде базовой модели. –

ответ

2

Свойство Request.IsAuthenticated будет ложным для запроса, который фактически выполняет вход в систему; в конце концов, пользователь не был аутентифицирован во время запроса.

Это то, что вы ожидаете, и просто подчеркивает, что необходимо небольшое изменение в процессе входа в систему. Вместо оказания вида в ответ на логин, выполнить переадресацию вместо (как именно ASP.NET Web Forms делает это) ... RedirectResult вместо ViewResult

Поэтому:

  1. GET дома страница
    • Request.IsAuthenticated == ложный
  2. GET Войти
    • Re quest.IsAuthenticated == ложный
  3. POST Логин (на самом деле аутентификации)
    • Request.IsAuthenticated == ложь
    • Response содержит аутентификации печенье и редирект на главную страницу (HTTP 302)
  4. GET страница
    • Запрос теперь AUTH Cookie
    • Request.IsAuthenticated == истинный

I

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