MVC перенаправляет авторизованных пользователей на неправильный URL-адрес после тайм-аута

Я опубликовал свой проект MVC на сервере IIS 6. Работает под приложением MVCapp. Веб-проект получает URL-адрес: www.domain.com/MVCapp/.

Я использую формы входа для аутентификации и получил проблему после публикации.

Web.config выглядит следующим образом:

<authentication mode="Forms">
<forms name="CTWebCookie" loginUrl="~/Account/Login" defaultUrl="~/Home/Index" slidingExpiration="true" protection="All" timeout="20"/>
</authentication> 

Например, если я запускаю следующий код в действии:

FormsAuthentication.SignOut();
FormsAuthentication.RedirectToLoginPage();

..все отлично работает и пользователь перенаправляется на www.domain.com/MVCapp/Account/Login.

Однако, когда время аутентификации истекло - при следующем запросе страницы пользователь будет перенаправлен на www.domain.com/Account/Login. Корень приложения не маршрутизируется, а URL-адрес указывает на корень IIS.

Как я могу заставить приложение разрешать правильный URL-адрес после тайм-аута авторизации и почему он работает при программном выходе, а не при автоматическом выходе?

Пожалуйста посоветуй.


person Community    schedule 26.05.2009    source источник
comment
Не могли бы вы предоставить свой код Account.Login?   -  person eu-ge-ne    schedule 26.05.2009
comment
Извините за разъяснения, но вы говорите, что когда время авторизации истекает, вы перенаправляетесь в корень домена (www.mydomain.com), а не на страницу входа (www.mydomain.com/Account/Login) , правильно? Каков правильный URL-адрес, который вы хотите, чтобы пользователь увидел, когда время авторизации истекло?   -  person nkirkes    schedule 26.05.2009


Ответы (2)


Шаблон проекта ASP.NET MVC использует ~/Account/Login. Проверьте свой web.config:

<authentication mode="Forms">
    <forms loginUrl="~/Account/Login" ... />
</authentication>

ОБНОВЛЕНО:

Есть ли какое-либо приложение в корневом каталоге IIS (www.domain.com/)? Если да, попробуйте удалить это приложение из IIS. Вы также можете добавить эту строку в свой Site.Master:

 <%= System.Web.Security.FormsAuthentication.LoginUrl %>

чтобы увидеть, является ли ваш loginUrl точно /MVCapp/Account/Login или чем-то еще

Надеюсь это поможет

person eu-ge-ne    schedule 26.05.2009
comment
Мои настройки конфигурации не были опубликованы. Извини за это. Я отредактировал свой пост, и, как вы видите, я использую тот же URL, что и шаблон. - person ; 26.05.2009

Ничего, разобрался (глупая ошибка), но спасибо за помощь.

Проблема заключалась в javascript на странице входа, который перезагружал страницу как target.top в случае асинхронных запросов. URL-адрес в javascript не был правильно разрешен.

person Community    schedule 27.05.2009