Аутентификация ASP.NET истекает по истечении времени ожидания - PullRequest
12 голосов
/ 08 июня 2011

Я создаю свой собственный билет для аутентификации, используя следующий код:

string formsCookieStr = string.Empty;
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
            1,                              // version
            username,                       // user name
            DateTime.Now,                   // issue time
            DateTime.Now.AddMinutes(30),    // expires
            false,                          // Persistence
            userRoleData                    // user data
    );
formsCookieStr = FormsAuthentication.Encrypt(ticket);
HttpCookie FormsCookie = new HttpCookie(FormsAuthentication.FormsCookieName, formsCookieStr);
HttpContext.Response.Cookies.Add(FormsCookie);

Я хочу, чтобы срок действия был скользящим, каждый раз, когда клиент отправляет запрос, срок действия должен быть сброшен до 30 минут. Однако я создаю тикет только при первом входе пользователя в систему. Будет ли ASP.NET автоматически сокращать время истечения для меня или мне нужно будет что-то сделать «вручную», чтобы реализовать скользящий срок действия?

1 Ответ

10 голосов
/ 08 июня 2011

Это настраивается в разделе forms файла web.config.Способ истечения скользящего режима заключается в том, что при каждом запросе механизм ASP.NET перезаписывает cookie-файл проверки подлинности, увеличивая время ожидания:

<authentication mode="Forms">
  <forms 
      loginUrl="~/Account/LogOn" 
      timeout="2880" 
      slidingExpiration="true" 
  />
</authentication>

Обратите внимание, однако, что включение истечения скользящего срока является одной из вещей, которая считается плохой практикой в Правила безопасности ASP.NET .

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