Sessões Asp.net sendo cruzadas / misturadas
Algumas semanas atrás, um de nossos clientes entrou em contato conosco dizendo que, às vezes, quando ele cria uma atividade, ela é criada com o nome de outra pessoa!
Fizemos uma solução de problemas e não conseguimos encontrar nada. Pedimos que o usuário entre em contato conosco na próxima vez em que estiver enfrentando esses problemas. Ele nos contatou e pudemos conversar com ele e ver o problema com nossos próprios olho
Não foram apenas as atividades, ele foi reconhecido como outra pessoa no aplicativo. Ele tinha acesso a tudo o que outra pessoa deveria ter acesso. Foi quando percebemos que estávamos tendo um problema de sessão misturada.
Um pouco sobre o nosso código:
Como qualquer outro aplicativo, temos uma página de login simples que o usuário digita e-mail e senha e os autenticamos em nosso banco de dados e, se eles são válidos, chamamos FormsAuthentication.SetAuthCookie () para salvar o ID do usuário atual no cookie e o deixamos entrar.
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));
}
Também usamos o seguinte trecho de código para obter o ID do usuário conectado (usuário atual) em nosso aplicativ
public static int GetCurrentUserID()
{
int userID = -1;
int.TryParse(HttpContext.Current.User.Identity.Name, out userID);
return userID;
}
E sim, fizemos nossa lição de casa, pesquisamos no Google e vimos os dois links a seguir:
http: //lionsden.co.il/codeden/? p = 446
Mistura de sessão do ASP.NET usando StateServer (SCARY!)
Desativamos o cache no modo kernel e no modo usuário para arquivos .aspx e .ascx, e isso ainda está acontecend
PS - O aplicativo está sendo executado no Windows 2008 R2 com o IIS 7.5. E nós somosNÃ usando sessão sem cozinhar.