2009-12-28 96 views
1

我们为客户提供私人网站。客户经常告诉我们他们看到了另一个用户的档案。ASP.NET会话切换

我们的身份验证过程如下所示: 凭证 - >检查数据库表 - >用户ID保存在会话中。

据我所知,用户以某种方式切换到另一个用户的会话。任何人都可以为其命名至少一种可能性吗?

+0

正如你所解释的那样,用户不应该有可能获得彼此的会话。但也许你应该发布一些代码。 – driis 2009-12-28 11:40:33

+0

如果你可以发布一些代码,它可能会有所帮助。 – RickNZ 2009-12-30 00:16:06

+0

这里有类似的问题。试试看那里提出的解决方案。 http://stackoverflow.com/questions/1646274/asp-net-session-mix-up-using-stateserver-scary – Pedro 2009-12-28 11:39:53

回答

2

当在页面上启用输出缓存时,会缓存整个HTTP响应,包括响应标头。这意味着设置会话cookie的HTTP头也可以缓存在那里。

确保在任何设置用户特定cookie的页面上禁用输出缓存。请注意,禁用内核模式缓存是不够的 - 整个响应也由ASP.NET运行时单独缓存。

但是,您仍然可以安全地在这些页面上启用客户端缓存(如果适用)(Location="Client")。

+0

我很抱歉,但我无法找到关闭此输出缓存的方式。你能把门给我看吗? – 2009-12-29 14:21:32

+0

在* .aspx文件的顶部是否有'<%@ OutputCache%>'指令?或者你是否在页面或其使用的任何控件或主页面的后面的代码中对Response.Cache对象进行调用? – RickNZ 2009-12-30 00:14:31

1

听起来好像您正在将配置文件数据保存在静态变量中。此外,你永远不应该实现你自己的认证机制,而应该基于内置的asp.net表单认证。已经有内置支持sql server based authentication