Asp.net Sesiones cruzadas / mezcladas
ace unas semanas, uno de nuestros clientes nos contactó diciendo que a veces, cuando crea una actividad, se crea bajo el nombre de otra persona.
Hemos solucionado algunos problemas y no hemos podido encontrar nada. Le pedimos al usuario que nos contactara la próxima vez que experimentara estos problemas. Se puso en contacto con nosotros y pudimos hacer una reunión con él y ver el problema con nuestros propios ojos.
No fueron solo las actividades, fue reconocido como alguien más en la aplicación. Tenía acceso a todo lo que otra persona debería tener acceso. Fue entonces cuando nos dimos cuenta de que teníamos un problema de sesión confusa.
Un poco sobre nuestro código:
Como cualquier otra aplicación, tenemos una página de inicio de sesión simple en la que el usuario ingresa el correo electrónico y la contraseña y los autenticamos en nuestra base de datos y, si son válidos, llamamos a FormsAuthentication.SetAuthCookie () para guardar la identificación del usuario actual en la cookie y lo dejamos 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));
}
También utilizamos el siguiente código para obtener la identificación del usuario conectado (usuario actual) en nuestra aplicación.
public static int GetCurrentUserID()
{
int userID = -1;
int.TryParse(HttpContext.Current.User.Identity.Name, out userID);
return userID;
}
Y sí, hicimos nuestra tarea, buscamos en Google y hemos visto los siguientes dos enlaces:
http: //lionsden.co.il/codeden/? p = 446
Mezcla de sesiones ASP.NET usando StateServer (¡ESCUELA!)
Hemos deshabilitado el almacenamiento en caché en modo kernel y el almacenamiento en caché en modo usuario para archivos .aspx y .ascx y esto todavía está sucediendo.
P.S: la aplicación se ejecuta en Windows 2008 R2 con IIS 7.5. Y somosN usando sesión sin cookies.