FormsAuthenticationTicket.expiration v web.config Тайм-аут значения - PullRequest
13 голосов
/ 02 марта 2011

Это веб-сайт MVC2, у меня проблема с билетом FormsAuthentication. Тайм-аут пользователя через 30 минут не может повторно войти в систему. Во время тестирования значение DateTime.Now.AddMinutes (30) было установлено равным 5000, и все было в порядке, но теперь оно изменилось на 30, и именно тогда началась проблема

Из создания cookie

 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 Ответ

24 голосов
/ 02 марта 2011

Поскольку вы вручную создаете куки-файл аутентификации, значение тайм-аута в вашем файле 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...