Аутентификация 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 автоматически сохранять время истечения срока для меня или мне нужно что-то сделать "вручную" для реализации скользящего истечения?
Ответы
Ответ 1
Это настроено в разделе forms
в файле web.config. Способ работы с истечением срока действия заключается в том, что при каждом запросе механизм ASP.NET перезаписывает cookie аутентификации путем увеличения таймаута:
<authentication mode="Forms">
<forms
loginUrl="~/Account/LogOn"
timeout="2880"
slidingExpiration="true"
/>
</authentication>
Обратите внимание, однако, что включение возможности полного истечения срока действия является одной из вещей, которые считаются плохой практикой в Практиках безопасности ASP.NET.