我正在分析几个月前离开公司的一位同事做的一个旧的asp.net网站的问题。在asp.net网站上混淆的会话
问题是我们有几次已经确定两个用户会话混在一起,所以如果例如两个用户登录,一个用户会看到其他用户的数据。由于很少发生(大约一个月左右),因此很难弄清楚哪里出了问题。
现在我已经通过他的认证码加强,它是这样的:
- 用户公共页面并按下输入用户名/密码在MySQL提交
- 在
Page_Load
在母版的代码检查数据库的用户名/密码是有效的,没有过期等,并返回一个唯一的用户ID,如果确定 - 页上,然后保存在这样的会议上loginpage(用于以后的注销):
HttpContext.Current.Session(Consts.CCookieName_LoginUrl) = Request.RawUrl
- 然后,将用户ID被保存这样的:
FormsAuthentication.SetAuthCookie(userid, False)
- 然后,执行重定向到安全区域:
userid = Context.User.Identity.Name
- 用户数据被加载acording:
Context.Response.Redirect(secureurl, False)
- 在安全区域的母版的
Page_Init
用户标识是通过读到用户ID - 用户导航安全区域,即。步骤6 - 7重复
- 用户suddently看到其他用户的数据
我有什么错误的一些想法,但想有一些输入修改代码之前,所以请人?
我们也使用asp.net表单身份验证,并且很少有这方面的报告,我们永远无法重现问题并不幸地进行调试。我希望有人可以添加更有用的东西。 – 2011-06-23 03:42:24
看看这个公认的答案:http://stackoverflow.com/questions/6441182/aspx-global-instance-of-class-possible-bug-in-code-structure/6441357#6441357我相信这解决了我们的问题 – Muleskinner 2011-06-23 07:08:48
你使用任何类型的缓存? – 2011-06-25 11:51:30