2012-04-14 19 views
6

Este es mi código en Login.aspx¿Cómo puedo establecer valor de la cookie en una página y leerlo desde otra página en un sitio web asp.net

protected void LoginButton_Click(object sender, EventArgs e) 
{ 
    HttpCookie loginCookie1 = new HttpCookie("loginCookie"); 
    Response.Cookies["loginCookie1"].Value = LoginUser.UserName; 
    Response.Cookies.Add(loginCookie1); 
} 

Y esto es en shop.aspx

protected void btnAddCart_Click(object sender, EventArgs e) 
{ 
    HttpCookie myCookie = new HttpCookie(dvProduct.DataKey.Value.ToString()); 
    myCookie["Category"] = dvProduct.DataKey["Category"].ToString(); 
    myCookie["Product"] = dvProduct.DataKey["Product"].ToString(); 
    myCookie["Quantity"] = txtQuantity.Text; 
    myCookie["Price"] = dvProduct.DataKey["Price"].ToString(); 
    myCookie.Expires = DateTime.Now.AddDays(1d); 
    Response.Cookies.Add(myCookie); 
    Response.Redirect("ViewCart.aspx", true); 
} 

quiero leer el valor de nombre de usuario de la galleta (valor establecido en Login.aspx

+0

Corrección pequeña -> Quiero leer el valor del nombre de usuario de la cookie (valor establecido en login.aspx) de la página shop.aspx – techblog

+0

Como nota, no debe guardar el nombre de usuario en una cookie; esta es una vulnerabilidad de seguridad Es muy fácil cambiar el valor de una cookie del cliente, y luego todo lo que necesitan hacer es adivinar el nombre de un administrador para obtener acceso completo a su sistema. En su lugar, asocie al usuario con un guid y almacene el guid en la cookie. En el viaje de regreso, busque la información almacenada con el GUID en el servidor. –

Respuesta

14

que básicamente necesita para solicitar la cookie que en realidad no importa en qué página está aquí es una explicación acerca de las cookies

http://msdn.microsoft.com/en-us/library/ms178194.aspx

HttpCookie aCookie = Request.Cookies["loginCookie"]; 
string username = Server.HtmlEncode(aCookie.Value); 
+0

> ¡Oye! Gracias ... ¡funcionó! – techblog

+3

@techblog: recuerda votar las respuestas que creas que son buenas. Eso nos da a todos una cálida sensación borrosa: P .. Y si esta respuesta fue la resolución de su pregunta, entonces acéptelo ... Me gusta esto +1. – Arion

1

Esto debe hacerlo:

var userName = Request.Cookies["loginCookie"].Value; 
+0

> Estoy obteniendo este error con el código anterior
{"Referencia de objeto no establecida en una instancia de un objeto."} – techblog

+0

Es porque no puede obtener el valor de un objeto nulo. –

4

Su código que establece loginCookie tiene un aspecto extraño:

HttpCookie loginCookie1 = new HttpCookie("loginCookie"); 
Response.Cookies["loginCookie1"].Value = LoginUser.UserName; // <--- strange!!!! 
Response.Cookies.Add(loginCookie1); 

Lo más probable es que su cookie no se envíe al navegador - consulte con depurador HTTP como Fiddler.

+0

> Estoy recuperando el nombre de usuario del control de inicio de sesión de asp.net. LoginUser es la ID del control de inicio de sesión. Aquí revisé si está recuperando el nombre de usuario, lo está recuperando bien. Solo estoy teniendo problemas para leerlo. – techblog

+0

Por favor, publique qué encabezado de cookie se envía realmente al navegador mediante "login.aspx" y desde el navegador en la página "shop.aspx". –

+0

> Hola, tengo la solución. A continuación, el código resolvió el problema. HttpCookie aCookie = Request.Cookies ["loginCookie1"]; string username = Server.HtmlEncode (aCookie.Value); > Gracias. – techblog

Cuestiones relacionadas