ASP.Net MVC Cookies Лучшие практики - PullRequest
8 голосов
/ 28 июля 2010

Я ищу некоторые рекомендации относительно файлов cookie в ASP.Net MVC (или просто об обработке файлов cookie в целом). Я храню информацию об аутентификации пользователей, которые проходят аутентификацию через форму входа в куки. Это работает отлично, но теперь мне нужно сохранить немного больше информации в куки. Эта дополнительная информация на самом деле не «связана с аутентификацией», поэтому я не решаюсь сохранить ее в билете аутентификации. Есть ли лучшая практика для хранения дополнительной информации. Можно ли установить несколько файлов cookie (и если да, то это хорошая или плохая практика)? Другие вещи, которые я должен рассмотреть здесь?

Вот текущий код, который я использую, чтобы установить мандат аутентификации и обернуть его в файл cookie:

private HttpCookie GetAuthCookie(AuthToken authToken)
{
    var authTokenXml = serializationService.Serialize(authToken);
    var authCookieString = FormsAuthentication.Encrypt(
        new FormsAuthenticationTicket(
            0,
            Keys.AuthToken,
            DateTime.Now,
            DateTime.Now.AddMinutes(AppSettings.SessionTimeoutMinutes),
            true,
            authTokenXml));
    var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, authCookieString)
                     {
                         Expires = DateTime.Now.AddDays(AppSettings.AuthCookieExpireDays)
                     };
    return cookie;
}

Ответы [ 3 ]

12 голосов
/ 28 июля 2010

Практическое правило: сохраняйте в куки только минимум (обычно это идентификатор пользователя) и используйте этот минимум, чтобы извлекать остаток из вашего хранилища данных каждый раз, когда вам это нужно. Если вы довольны выступлением, вы можете перестать читать.

Если вы понимаете, что к вашему хранилищу данных слишком много запросов, вы можете использовать сеанс или кэшировать результаты ваших запросов.

2 голосов
/ 28 июля 2010

Размер файла cookie может быть ограничен 4096 байтами.После этого вам может потребоваться разбить данные на несколько файлов cookie, если вы хотите продолжать сохранять файлы cookie.Очевидно, что теперь у вас есть дополнительная сложность чтения для всех, чтобы восстановить ваш билет аутентификации + данные, и, если один файл cookie не был отправлен вместе с остальными, это может иметь некоторые ужасные последствия.

Вы смотрели на использование другогомагазин сессий?Это действительно то, что вы используете cookie, как здесь, и если только он не связан с аутентификацией и не должен быть доступен в конвейере обработки до того, как сессия станет доступной, я был бы склонен взглянуть на это в сеансе.Вы можете использовать внешнее хранилище сеансов, такое как база данных, если не хотите сохранять сеанс в процессе.

1 голос
/ 28 июля 2010

Вы не должны помещать ничего, кроме данных аутентификации в куки аутентификации.Использование cookie-файлов в Asp.net практически такое же, как в любой веб-платформе программирования.Вы можете установить столько файлов cookie, сколько захотите, и хранить в них все, что захотите.Некоторые примеры:

http://www.cookiecentral.com/faq/

http://stephenwalther.com/blog/archive/2008/07/08/asp-net-mvc-tip-15-pass-browser-cookies-and-server-variables-as-action-parameters.aspx

http://www.asp.net/general/videos/read-write-and-delete-cookies-in-aspnet

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...