2012-04-14 14 views
6

Questo è il mio codice in Login.aspxCome posso impostare valore del cookie in una pagina e leggere da un'altra pagina in un sito 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); 
} 

E questo è in 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); 
} 

voglio leggere il valore del nome utente da biscotto (valore impostato in login.aspx

+0

Piccola correzione -> Voglio leggere il valore del nome utente dal cookie (valore impostato in login.aspx) dalla pagina shop.aspx – techblog

+0

Come nota, non si deve memorizzare il nome utente in un cookie; questa è una vulnerabilità di sicurezza. È molto facile cambiare il valore di un cookie dal client e quindi tutto ciò che devono fare è indovinare il nome di un amministratore per ottenere l'accesso completo al tuo sistema. Invece, associare l'utente con un guid e memorizzare il guid nel cookie. Durante il viaggio di ritorno, cercare le informazioni memorizzate con il guid sul server. –

risposta

14

che, fondamentalmente, devono richiedere il cookie in realtà non importa a che pagina siete Ecco una spiegazione sui cookie

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

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

> Ehi! Grazie .. ha funzionato !! – techblog

+3

@techblog: ricorda di aggiornare le risposte che pensi siano buone. Questo dà a tutti noi una calda sensazione di confusione: P .. E se questa risposta è stata la risoluzione della tua domanda allora accettala .. Mi piace questo +1. – Arion

1

Questo dovrebbe farlo:

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

> Ricevo questo errore con il codice sopra riportato
{"Riferimento oggetto non impostato su un'istanza di un oggetto."} – techblog

+0

È perché non è possibile ottenere il valore di un oggetto nullo. –

4

tuo codice che imposta loginCookie sembra strano:

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

Molto probabilmente il tuo cookie non viene inviato al browser - controlla con il debugger HTTP come Fiddler.

+0

> Sto recuperando il nome utente dal controllo di accesso di asp.net. LoginUser è l'ID del controllo di accesso. Qui ho controllato se sta recuperando il nome utente, lo sta recuperando bene. Ho solo difficoltà a leggerlo. – techblog

+0

Si prega di postare quale cookie header è automaticamente inviato al browser da "login.aspx" e dal browser nella pagina "shop.aspx". –

+0

> Ciao, ho trovato la soluzione. Sotto il codice risolto il problema. HttpCookie aCookie = Request.Cookies ["loginCookie1"]; string username = Server.HtmlEncode (aCookie.Value); > Grazie. – techblog

Problemi correlati