【发布时间】:2011-06-01 11:08:13
【问题描述】:
我正在分析一个旧 asp.net 网站的问题,该网站是几个月前离开公司的一位同事创建的。
问题是我们有几次经历过两个用户会话混合在一起,例如,如果两个用户登录,一个用户会看到其他用户的数据。由于这种情况很少发生(大约一个月一次),因此很难弄清楚出了什么问题。
我现在已经通过他的代码进行身份验证,它是这样的:
- 用户在公共页面输入用户名/密码并按提交
- 在 Masterpage 上的
Page_Load上,代码在 mySql 数据库中检查用户名/密码是否有效、未过期等,如果正常则返回唯一的用户 ID - 然后页面将登录页面保存在会话中,如下所示(用于以后注销):
HttpContext.Current.Session(Consts.CCookieName_LoginUrl) = Request.RawUrl - 然后userid保存如下:
FormsAuthentication.SetAuthCookie(userid, False) - 然后重定向到安全区域:
Context.Response.Redirect(secureurl, False) - 在安全区域母版页的
Page_Init中,用户ID 被读取:userid = Context.User.Identity.Name - 根据用户ID加载用户数据
- 用户导航安全区域,即。重复第 6 - 7 步
- 用户突然看到另一个用户的数据
我对出了什么问题有一些想法,但想在修改代码之前有一些意见,所以请任何人?
【问题讨论】:
-
我们也使用 asp.net 表单身份验证并且很少报告此问题,遗憾的是我们永远无法重现该问题并对其进行调试。我希望有人可以添加一些更有用的东西。
-
看看这个接受的答案:stackoverflow.com/questions/6441182/…我相信这解决了我们的问题
-
您是否在使用任何类型的缓存?
-
无缓存,在上述第 7 步中加载的用户实例已在模块中声明 - 我相信这是问题所在
标签: asp.net session authentication forms-authentication