Несколько недель назад один из наших клиентов связался с нами и сказал, что иногда, когда он создает действие, оно создается под чужим именем!
Мы устранили неполадки и ничего не нашли. Мы попросили пользователя связаться с нами в следующий раз, когда у него возникнут эти проблемы. Он действительно связался с нами, и мы смогли провести с ним гото-встречу и увидеть проблему собственными глазами.
Дело было не только в деятельности, он был признан кем-то другим в приложении. У него был доступ ко всему, к чему должен был иметь доступ другой человек. Именно тогда мы поняли, что у нас проблема с сессией.
Немного о нашем коде:
Как и в любом другом приложении, у нас есть простая страница входа, на которой пользователь вводит адрес электронной почты и пароль, и мы аутентифицируем их в нашей базе данных, и если они действительны, мы вызываем FormsAuthentication.SetAuthCookie () для сохранения текущего идентификатора пользователя. в печенье, и мы впустили его.
BL.User currentUser = BL.User.Authenticate(txtUsername.Text, txtPassword.Text);
if (currentUser != null)
{
this.Session["NumberOfLoginTried"] = "0";
FormsAuthentication.SetAuthCookie(currentUser.UserID.ToString(), chRememberMe.Checked);
Response.Redirect(FormsAuthentication.GetRedirectUrl(currentUser.UserID.ToString(), false));
}
Мы также используем следующий фрагмент кода, чтобы получить идентификатор пользователя, вошедшего в систему (текущий пользователь) в нашем приложении.
public static int GetCurrentUserID()
{
int userID = -1;
int.TryParse(HttpContext.Current.User.Identity.Name, out userID);
return userID;
}
И да, мы сделали нашу домашнюю работу, погуглили и увидели следующие две ссылки:
http://lionsden.co.il/codeden/?p=446
Смешивание сеанса ASP.NET с использованием StateServer (СТРАШНО!) а>
Мы отключили кэширование в режиме ядра и кэширование в пользовательском режиме для файлов .aspx и .ascx, и это все еще происходит.
P.S - Приложение работает в Windows 2008 R2 с IIS 7.5. И мы НЕ используем сеанс без файлов cookie.