2012-04-14 37 views
6

Đây là mã của tôi trong Login.aspxLàm thế nào tôi có thể thiết lập giá trị cookie trong một trang và đọc nó từ một trang khác trong một trang 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); 
} 

Và đây là trong 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); 
} 

tôi muốn đọc giá trị của tên người dùng từ cookie (giá trị đặt trong login.aspx

+0

Chỉnh sửa nhỏ -> Tôi muốn đọc giá trị tên người dùng từ cookie (giá trị được đặt trong login.aspx) từ trang shop.aspx – techblog

+0

Lưu ý, bạn không nên lưu tên người dùng trong cookie; đây là lỗ hổng bảo mật. Nó rất dễ dàng để thay đổi giá trị của một cookie từ khách hàng, và sau đó tất cả những gì họ cần làm là đoán tên của một quản trị viên để có được quyền truy cập đầy đủ vào hệ thống của bạn. Thay vào đó, liên kết người dùng với một guid và lưu trữ các guid trong cookie. Trên chuyến đi trở về, tra cứu thông tin được lưu trữ bằng guid trên máy chủ. –

Trả lời

14

về cơ bản bạn cần phải yêu cầu cookie nó không thực sự quan trọng vào những gì trang web mà bạn đang đây là một lời giải thích về các tập tin cookie

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

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

> Hey! Cảm ơn .. nó đã làm việc !! – techblog

+3

@techblog: hãy nhớ để upvote câu trả lời bạn nghĩ là tốt. Điều đó mang lại cho chúng ta tất cả cảm giác mờ ấm: P .. Và nếu câu trả lời này là giải pháp cho câu hỏi của bạn thì hãy chấp nhận nó .. Tôi thích +1 này. – Arion

1

này nên làm điều đó:

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

> Tôi nhận được lỗi này với mã ở trên
{"Tham chiếu đối tượng không được đặt thành phiên bản của đối tượng."} – techblog

+0

Bởi vì bạn không thể nhận được giá trị của một đối tượng null. –

4

Mã của bạn mà bộ loginCookie trông lạ:

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

Rất có thể cookie của bạn không được gửi tới trình duyệt - hãy kiểm tra với trình gỡ lỗi HTTP như Fiddler.

+0

> Tôi đang truy xuất tên người dùng từ kiểm soát Đăng nhập của asp.net. Người dùng đăng nhập là ID của điều khiển Đăng nhập. Ở đây tôi đã kiểm tra xem nó có đang truy xuất tên người dùng hay không, nó đang lấy nó. Tôi chỉ gặp rắc rối khi đọc nó. – techblog

+0

Vui lòng đăng tiêu đề cookie nào được gửi đến trình duyệt bởi "login.aspx" và từ trình duyệt trở lại trang "shop.aspx". –

+0

> Xin chào, tôi đã nhận được giải pháp. Mã dưới đây đã giải quyết được vấn đề. HttpCookie aCookie = Request.Cookies ["loginCookie1"]; tên người dùng chuỗi = Server.HtmlEncode (aCookie.Value); > Cảm ơn. – techblog

Các vấn đề liên quan