我有一个使用表单身份验证的ASP.Net 3.0 SP1应用程序。
在测试时,我注意到如果我查看了另一个用户正在查看的页面,则其他用户名将显示在我的母版页的控件中。 Context.User.Identity也适用于其他用户。
如果我切换到其他人没有查看Context.User.Identity的页面是正确的。
我难过并且很感激建议
提前谢谢。
克里斯
答案 0 :(得分:3)
可能因为页面启用了输出缓存:如果页面在服务器端缓存且VaryByParam = none,则所有用户都将从缓存中获取相同的副本。
我只能想到可能导致这种情况的两件事:
您将用户特定数据存储在请求之间共享的位置(例如,在静态(C#)/共享(VB)变量中,在ASP.NET缓存中,在Application对象中,... )
您已启用输出缓存。
检查:
aspx和ascx文件中的OutputCache指令,
web.config文件中的system.web / caching元素,
调用HttpCacheability.SetCacheability方法。
如果找不到问题:
尝试创建应用程序的简化版本,直到获得仍然可以再现不良行为的最简单版本。
在这个简化过程中,您可能会自己发现问题。如果没有,请从简化版本发布一些代码。
答案 1 :(得分:2)
使用无cookie浏览器时,请确保您没有使用身份验证票证附带的链接。
还要确保查看可能在请求之间共享数据的任何其他内容。就像DOK说的那样,但是记住应用程序并不是你做到这一点的唯一方法。
答案 2 :(得分:0)
看起来这个问题是因为我设置了targetframe =“_ self”或Target =“_ self”。我删除了所有这些,一切似乎都运行良好。
另一个注意事项:如果我要刷新页面,它还会显示具有正确用户的页面。