FormsAuthentication authCookie пуста только для некоторых пользователей - PullRequest
5 голосов
/ 14 января 2010

У меня странная проблема с аутентификацией форм asp.net. Эта проблема возникает только для 3 пользователей из 30+, которые успешно вошли в систему. Я использую очень простой код авторизации, который я использовал много раз и никогда не сталкивался с этой проблемой. После успешной аутентификации пользователей и создания файла cookie для аутентификации добавляется файл cookie и вызывается response.redirect для FormsAuthentication.GetRedirect (userid, false). Метод Application_AuthenticateRequest в Global.asax ударил.

// Extract the forms authentication cookie
        string cookieName = FormsAuthentication.FormsCookieName;
        HttpCookie authCookie = Context.Request.Cookies[cookieName];

        if (null == authCookie)
        {
            // There is no authentication cookie.
            return;
        }

Таким образом, сразу после того, как «хороший» файл cookie сохранен и происходит перенаправление, файл cookie становится нулевым. Я запустил код через отладчик, и файл cookie только для этих 3 пользователей. Но cookie выглядит так же, как cookie для многих пользователей, которые успешно входят в систему.

Есть идеи? Это стандартный код, который должен просто работать.

1 Ответ

2 голосов
/ 14 января 2010

Вы уверены, что «хороший» файл cookie сохранен и находится в ответе? В FormsAuthentication возможно добавление в заголовок хорошего файла cookie, но при выходе из него возникает ошибка из-за какой-то другой системной ошибки (например, сбой w3wp.exe), поэтому новый файл создается без файла cookie и происходит перенаправление в любом случае.

В моем собственном опыте с проблемой, подобной этой, у меня был пользовательский класс Principal, который падал после аутентификации (и создания cookie) и вместо того, чтобы писать соответствующий cookie, полностью удалял cookie из ответа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...