Срок действия файла cookie проверки подлинности с помощью форм не истек
Я пытаюсь реализовать очень простой механизм проверки подлинности форм Asp.net для сайта MVC. Проблема, которую я получаю, заключается в том, что срок действия моего файла cookie аутентификации истекает через год, тогда как я не хочу, чтобы он истекал через такое долгое время. Вот часть моего кода:
web.config
<authentication mode="Forms">
<forms loginUrl="~/Account/Login" timeout="2" />
</authentication>
контроллер
...
FormsAuthentication.SetAuthCookie(username, false);
...
Я нашел этот ответ (этот вопрос похож, но в моем случае тайм-аут никогда не возникает), но является ли это единственным способом истечения срока действия файла cookie, или я что-то здесь не так делаю?
Когда я просматриваю файл cookie, срок его действия истекает через год, хотя срок его действия истекает через пару минут, почему?
То, что я хочу, так или иначе, пользователь выходит из системы через некоторое время, и я подумал, установка срока действия в forms
тег сделает работу?
1 ответ
Почти месяц, 100 просмотров и никаких ответов после того, как я нашел решение.
Во-первых, тайм-аут, указанный в web.config
работает только в том случае, если cookie-файл установлен как постоянный, т.е. постоянный cookie-файл также может истечь. Изначально я ошибочно предполагал, что постоянный cookie не может просрочиться. Фактически, мой оригинальный код работал бы, если бы я всегда устанавливал cookie на постоянный характер.
Во-вторых, я полагаю, что поставщику членства не нужно, чтобы проверка подлинности с помощью форм работала, как указано в комментариях выше.
Вот как я сейчас создаю куки аутентификации:
HttpCookie authCookie = FormsAuthentication.GetAuthCookie(username, isPersistent);
if (!isPersistent)
{
//this is because if it was not set then it got
//automatically set to expire next year even if
//the cookie was not set as persistent
authCookie.Expires = DateTime.Now.AddMinutes(15);
}
Response.Cookies.Add(authCookie);
Пожалуйста, дайте мне знать, есть ли альтернатива этому?