FormsAuthenticationTicket.expiration v web.config Тайм-аут значения
Это веб-сайт MVC2, у меня проблема с билетом FormsAuthentication. Тайм-аут пользователя через 30 минут не может повторно войти в систему. Во время тестирования значение DateTime.Now.AddMinutes(30) было установлено равным 5000, и все было в порядке, но теперь оно изменилось на 30, и именно тогда началась проблема
От создания куки
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
1,
user.UserID,
DateTime.Now,
DateTime.Now.AddMinutes(30),
false,
"user,user1",
FormsAuthentication.FormsCookiePath);
Файл Web.config
<authentication mode="Forms">
<forms loginUrl="~/Account.mvc/LogOn" timeout="2880" name=".ASPXFORMSAUTH" />
</authentication>
Должно ли значение срока действия при создании заявки быть>= значение web.config?
1 ответ
Решение
Поскольку вы вручную создаете куки-файл аутентификации, значение времени ожидания в вашем файле web.config полностью игнорируется. Поэтому я бы порекомендовал вам иметь такое же значение:
var ticket = new FormsAuthenticationTicket(
1,
user.UserID,
DateTime.Now,
DateTime.Now.AddMinutes(FormsAuthentication.Timeout.TotalMinutes),
false,
"user,user1",
FormsAuthentication.FormsCookiePath
);
var encryptedTicket = FormsAuthentication.Encrypt(ticket);
var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket)
{
HttpOnly = true,
Secure = FormsAuthentication.RequireSSL,
Path = FormsAuthentication.FormsCookiePath,
Domain = FormsAuthentication.CookieDomain
};
Response.AppendCookie(cookie);