Подтвердить что ты не робот

Аутентификация ASP.NET с истечением срока действия на пользовательский билет

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

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);

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

4b9b3361

Ответ 1

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

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

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