ASP.NET: как получить объект FormsAuthenticationTicket, когда истекает аутентификация

StackOverflow https://stackoverflow.com/questions/4491848

Вопрос

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

FormsIdentity id = (FormsIdentity)User.Identity;
FormsAuthenticationTicket ticket = id.Ticket;

Но пользователь нуль, когда срок действия срока аутентификации истек. Так что это не сработает. Я пробовал это:

HttpCookie authCookie = context.Request.Cookies[FormsAuthentication.FormsCookieName];
FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(authCookie.Value);

Но формы cookie исчез, когда истек срок аутентификации, что означает, что Authcookie будет нулевым. Так что это не работает.

Есть ли способ на самом деле получить Объект FormsAuthenticationTicket при истечении периода аутентификации? Должно быть, потому что в объекте есть свойство «истек». Что мне не хватает?

Спасибо.

Это было полезно?

Решение

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

Другие советы

Предполагая, что браузер (только т.е.) не удаляет истек печенье, Asp.net, кажется, лишит истекший аутентификацию проездной билет Из коллекции запроса. Cookies. Он все еще находится в запросе. Header ["cookie"], но не доступен в коллекции файлов cookie. Я полагаю, что это происходит где -то между событиями «BeginRequest» и «AuthenticAteRequest». Я сталкиваюсь с той же проблемой и сам изучаю ее.

    void context_BeginRequest(object sender, EventArgs e)
    {
        string cookie = ((HttpApplication)sender).Context.Request.Cookies[".ASPXFORMSAUTHSS"].Value;
        FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(cookie);
    }
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top