2009-07-01 62 views
24

我想在auth cookie的用户数据部分存储一些数据,如用户昵称和用户ID(表主键)。我这样做的原因是在浏览器关闭时保留这些数据,而不会让用户重新登录。ASP.Net在Auth Cookie中存储用户数据

编辑:哎呀!意识到我不会很好地解释自己。我不想基于他们的cookie重新认证用户。用户是已经通过ASP.Net的会员制认证 - 这部分是好的。我的问题是,如果我想显示用户的昵称,例如,我必须关闭另一个SQL查询,然后将其存储在会话中。我认为将这些信息存储在UserData部分的auth cookie(同样是由ASP.Net创建的)中是有意义的,该部分似乎是为此目的而创建的。

我不想使用配置文件,因为我有我自己的配置文件数据用户表,我需要一个轻量级的解决方案。

什么是在auth cookie的用户数据部分编码这些数据的好方法?我正在考虑序列化,但这可能是矫枉过正。我是否以这种错误的方式去做?

回答

2

也许你可以创建另一个cookie ...我个人不会搞乱auth cookie。

+0

其实我产生一个新的身份验证的cookie。我可以继续并在新cookie的UserData部分中存储一个简单的文本字符串。我的问题是关于序列化更复杂的对象。 – 2009-07-01 17:54:16

+0

我的意思是除了auth cookie之外还有一个cookie。独立保留auth cookie并为临时用户数据创建一个新的未加密的cookie。 – 2009-07-01 20:20:38

+4

Nah,我将存储用户名和昵称 - 不想在没有加密的情况下存储此类敏感数据 – 2009-07-02 15:09:48

3

是的。如果您将Cookie中的用户ID和登录存储在cookie中,阻止某人将Cookie更改为任何人的用户ID和登录?

您需要设置验证票系统。基本上它是一个cookie值,当没有会话存在时被检查。如果存在某个值,则对照应包含其用户标识的故障单表运行该值。如果您找到该票,请给他们一个会话和一张新票

0

在cookie中存储额外的用户数据意味着每次请求都会从客户端来回发送更大的cookie。

一个更好的方法,以避免额外的数据库击中你担心是在内存中缓存数据的用户登录后英寸

ASP.NET有每个请求缓存HttpContext.Current.Items和应用域缓存HttpContext.Current.Cache,我认为你在这个实例中寻找HttpContext.Current.Cache。

另外,如果你需要跨Web服务器(负载平衡Web服务器)缓存你可以看看第三方键值商店像一样的memcached,Redis的,速度,NCACHE等