Tengo una galleta que estoy usando para persistir ID de usuario de un usuario pero estoy teniendo un tiempo difícil reemplazarlo con un nuevo valor. De acuerdo con MSDN, debería ser capaz de simplemente sobrescribir el valor, pero no ha estado funcionando. Estoy haciendo la lógica de inicio de sesión en un controlador y paso al usuario a una nueva página web si tienen éxito.Modificación de Valor de una cookie en un HttpHandler
public void ProcessRequest(HttpContext context)
{
User user = User.FindByUsernameAndPassword(
context.Request.Form["username"],
context.Request.Form["password"]);
context.Response.Cookies["user_id"].Value = user.ID.ToString();
context.Response.Redirect("/profile", true);
}
La primera vez que inicie sesión en la que funciona bien, pero si trato de sobrescribir mi galleta actual pulsando el controlador con un nuevo identificador de usuario, que no cambia el valor de la cookie y lo sigo estando conectado como el usuario que era cuando lo golpeé.
Otras páginas usan la cookie para iniciar sesión, pero como la identificación del usuario no cambia, no cambia el usuario que inició sesión.
public User User { get; set; }
public override void Page_Load()
{
this.User = User.Find(int.Parse(Request.Cookies["user_id"].Value));
}
Disculpa, eso fue en realidad un error tipográfico. El código ni siquiera se compilará si lo haces sin el '.Value'. –
¿Necesitamos verificar si la cookie existe antes de modificar su valor? En otras palabras, ¿habrá error si la cookie no existe e intentamos modificar el valor de una cookie que no existe? – sajanyamaha
sí, si la cookie es nulo, no se puede acceder a su propiedad Value – carlbenson