Я отслеживаю ошибку в каком-то старом коде aspx. Проблема в том, что один очень редкий случай (1 / 10.000 просмотров страниц или около того) двух пользователей смешивается, т.е. пользователь A видит данные пользователя B.
Вот как структурирован код: у нас есть пользовательский класс, который определен в модуле, подобном этому:
Public Module MyGlobals
Public myUser As CMyUser
End Module
На странице входа в систему мы проверяем имя пользователя / пароль, и если он действителен, то соответствующий идентификатор пользователя загружается из db, и мы делаем:
FormsAuthentication.SetAuthCookie(userid, False)
Затем мы перенаправляем в безопасную зону. В защищенных областях MasterPage при событии Page_Init мы имеем:
If Context.User.Identity.IsAuthenticated then
' Initialize the user class (user data is loaded)
MyGlobals.myUser = New CMyUser(Context.User.Identity.Name)
Else
' Redirect to loginpage
End If
Здесь и далее безопасный доступ к
MyGlobals.myUser
экземпляр с каждой страницы, на которой защищенная мастер-страница является главной, или могут быть проблемы с этой структурой?