Подтвердить что ты не робот

Почему мой ASP файл cookie ASP.NET MVC не работает?

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

Когда вы входите в систему, я устанавливаю файл cookie с

FormsAuthentication.SetAuthCookie(userName, true);

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

Мой web.config:

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

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

4b9b3361

Ответ 1

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

вы можете проверить этот ответ: Постоянная регистрация пользователя с членством в ASP.Net

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

Ответ 2

Я бы лучше создал себе 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);  

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