首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASP.Net MVC最佳实践

ASP.Net MVC最佳实践
EN

Stack Overflow用户
提问于 2010-07-28 04:42:10
回答 3查看 9.3K关注 0票数 8

我正在寻找一些关于ASP.Net MVC中的cookie的指导(或者只是一般的cookie处理)。我一直在cookie中存储有关通过表单登录进行身份验证的用户的身份验证信息。这很好用,但是我现在需要在cookie中存储更多的信息。这些附加信息实际上并不是“与身份验证相关的”,所以我在犹豫是否将其存储在身份验证票证中。有没有更好的方法来存储额外的信息。是否可以设置多个cookie(如果可以,这是一个好的/坏的做法)吗?我在这里应该考虑的其他事情?

下面是我用来设置身份验证票证并将其封装在cookie中的当前代码:

代码语言:javascript
复制
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;
}
EN

回答 3

Stack Overflow用户

发布于 2010-07-28 05:27:43

经验法则:仅在cookie中存储最小值(通常是用户id),并在每次需要时使用此最小值从数据存储中获取其余部分。如果你对表演感到满意,你可以停止阅读。

如果你意识到你的数据存储有太多的查询,你可以使用会话或者缓存查询的结果。

票数 12
EN

Stack Overflow用户

发布于 2010-07-28 04:53:46

cookie的大小有一个限制,即4096字节。在此之后,如果想要继续在cookies中存储数据,则可能需要将数据分成几个cookies。显然,您现在增加了读取所有数据以重建身份验证票证+数据的复杂性,如果没有将一个cookie与其他cookie一起发送,可能会产生一些可怕的后果。

您是否考虑过使用不同的会话存储?这实际上就是您在这里使用的cookie,除非它与身份验证相关,并且需要在会话可访问之前在处理管道中可用,否则我倾向于考虑将其放入会话中。如果不想将会话存储在进程中,则可以使用进程外会话存储,如数据库。

票数 2
EN

Stack Overflow用户

发布于 2010-07-28 04:55:01

您不应在身份验证cookie中放入除身份验证数据以外的任何内容。cookies的Asp.net用法与任何web编程平台中的用法基本相同。您可以设置任意数量的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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3347779

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档