FWIW быть очень осторожным с хранением что-то вроде идентификатору пользователя в куки зашифрованном виде. Это делает ваш сайт очень склонным к отравлению печенья, когда пользователи могут легко олицетворять другого пользователя. Если вы рассматриваете что-то подобное, я настоятельно рекомендую напрямую использовать cookie проверки подлинности форм.
bool persist = true;
var cookie = FormsAuthentication.GetAuthCookie(loginUser.ContactId, persist);
cookie.Expires = DateTime.Now.AddMonths(3);
var ticket = FormsAuthentication.Decrypt(cookie.Value);
var userData = "store any string values you want inside the ticket
extra than user id that will be encrypted"
var newTicket = new FormsAuthenticationTicket(ticket.Version, ticket.Name,
ticket.IssueDate, ticket.Expiration, ticket.IsPersistent, userData);
cookie.Value = FormsAuthentication.Encrypt(newTicket);
Response.Cookies.Add(cookie);
Тогда вы можете прочитать в любое время на странице ASP.NET, выполнив
string userId = null;
if (this.Context.User.Identity.IsAuthenticated)
{
userId = this.Context.User.Identity.Name;
}
Чтение постоянного кода cookie не помогло мне. См. Мой ответ в этом сообщении. –
Ваш код функционально ничем не отличается от того, который был опубликован в исходном вопросе, хотя за исключением того, что ваш файл cookie истекает через 12 часов, а OP - через год. – Ortund
Этот файл cookie не является постоянным, если клиент закрывает браузер, в котором cookie исчезнет. Вопрос в том, как писать постоянный файл cookie, а не «cookie» сеанса. – Felype