Почему мой постоянный cookie-файл ASP.NET MVC не работает? - PullRequest
16 голосов
/ 13 января 2012

Я использую ASP.NET MVC 3 с аутентификацией форм (на основе измененного кода учетной записи vanilla, который вы получаете с file-> new).

При входе в систему я устанавливаю файл cookie авторизации с помощью

FormsAuthentication.SetAuthCookie(userName, true);

Так что это должно установить постоянный файл cookie.Но если я закрываю браузер и открываю заново, когда я захожу на сайт, я вынужден снова войти в систему!С помощью инструментов chrome dev можно увидеть, что файл cookie (.ASPXAUTH) создается и не удаляется при закрытии браузера, так что происходит?

Мой web.config:

<authentication mode="Forms">
  <forms loginUrl="~/Account/LogIn" timeout="10000"/>
</authentication>

Я проверяю это локально, под IIS, если это что-то меняет.

Ответы [ 2 ]

8 голосов
/ 13 января 2012

Я бы лучше создал себе cookie, используя билет для аутентификации.SetAuthCookie создает авторизационный билет под капотом.Вы пытались сделать свой собственный билет авторизации?Он позволит вам хранить дополнительные данные .

Вот пример:

// create encryption cookie         
FormsAuthenticationTicket authTicket = new FormsAuthenticationTicket(1, 
        userName, 
        DateTime.Now,
        DateTime.Now.AddDays(90),
        createPersistentCookie, 
        string.Empty);

// add cookie to response stream         
string encryptedTicket = FormsAuthentication.Encrypt(authTicket);    
System.Web.HttpCookie authCookie = new System.Web.HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);
if (authTicket.IsPersistent) 
{     
      authCookie.Expires = authTicket.Expiration; 
}
System.Web.HttpContext.Current.Response.Cookies.Add(authCookie);  

Надеюсь, это поможет.

3 голосов
/ 17 января 2013

Решено из комментария от @alexl:

Вы можете проверить этот ответ: Обеспечение постоянного входа пользователя в систему с членством ASP .Net

Хорошо, эта ссылка, похоже, сортироваласьэто для меня - использование SetAuthCookie и настройка моего конфига для явной установки имени файла cookie (в web.confg), и все работает сейчас.Weird!-

...