Отображение домашней страницы перед проверкой Auth в MVC3? - PullRequest
1 голос
/ 18 ноября 2011

Мы используем клиента MembershipProvider, который должен выходить в веб-сервис для аутентификации пользователей.Проверка подлинности с помощью форм устанавливается в файле web.config, который затем отправляется указанному поставщику.Когда аутентификация завершена, мы устанавливаем пользовательский файл cookie для хранения имени клиента, полного имени пользователя и т. Д.

Наша проблема заключается в следующем: довольно часто после истечения времени сеанса, когда вы повторно заходите на сайт (либо на нашемна машине разработчика или уходит из Visual Studio) вы все равно увидите домашнюю страницу по умолчанию, несмотря на то, что пользователь на самом деле не проходит аутентификацию.В тот момент, когда вы предпринимаете другое действие, сайт распознает, что пользователь недействителен, и возвращает вас на страницу входа.

У нас есть класс BaseController, из которого происходят все остальные контроллеры, и мы добавили атрибут [Authorize]в переопределенный метод Execute, но он, похоже, не работает:

[Authorize] protected override void Execute (System.Web.Routing.RequestContext requestContext)

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

Ответы [ 2 ]

1 голос
/ 18 ноября 2011

Несколько вещей приходят на ум.1. Вы уверены, что срок действия файла cookie истек по тому же запросу, на котором отображается домашняя страница?2. Используете ли вы кеширование вывода?

Сомнительно, но выкидываю это, если здесь нет некоторой недостающей информации: Это предполагает, что вы используете что-то в сеансе (вы упомянули сеанс выше). Если под сеансом вы подразумеваете только формы auth, то это не поможет (иуточните, пожалуйста)

Помните, что тайм-ауты сеансов и тайм-ауты аутентификации форм НЕ одинаковы и обрабатываются совершенно по-разному, поэтому вы должны поддерживать их синхронизацию по существу.

Проверьте мой код здесь: Как я могу обработать исключения тайм-аута аутентификации форм в ASP.NET?

Тайм-ауты аутентификации форм обновляются только по истечении половины времени.Тайм-ауты сеансов обновляются при каждом запросе, поэтому они легко теряют синхронизацию.

0 голосов
/ 18 ноября 2011

Интересно, что произойдет, если вы включите что-то подобное в Global.asax?

protected void Session_Start(Object sender, EventArgs e)
{
        if (User.Identity.IsAuthenticated)
        {
                FormsAuthentication.SignOut();
                Response.Redirect("~/SessionEnd.aspx");
        }
}

И я полагаю, что [Authorize] тоже относится к методам контроллера?

...