我正在分析幾個月前離開公司的一位同事做的一箇舊的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