2012-01-30 41 views
5

Khi đăng nhập thành công, tôi muốn lưu cookie chứa tên người dùng.Phiên bị mất khi lưu cookie

Cookie lưu chính xác và tải tên người dùng chính xác nhưng mất phiên!

Các mã để truy xuất tên người dùng là:

if (Request.Cookies["userName"] != null) 
{ 
    txtEmail.Text = Request.Cookies["username"].Value; 
    chkRemember.Checked = true; 
} 

Mã để lưu username là:

HttpCookie aCookie = new HttpCookie("username"); 
aCookie.Value = txtEmail.Text; 
aCookie.Expires = DateTime.Now.AddYears(5); 
Response.Cookies.Add(aCookie); 

Bất kỳ trợ giúp sẽ được đánh giá cao, Cảm ơn bạn

+3

Ý bạn là gì trong phiên? Phiên ASP.NET? Hoặc tạo phiên xác thực? Ngoài ra bạn đang thực hiện hành động nào chính xác? Bạn có đóng trình duyệt ở giữa không? –

+0

Phiên ASP.NET đang được đặt lại khi điều hướng từ biểu mẫu đăng nhập sang biểu mẫu tiếp theo. Đây chỉ là sau khi thêm mã ở trên. –

+0

Mã trên có trong biểu mẫu đăng nhập hay ở nơi khác không? – M3NTA7

Trả lời

1

tôi thấy một bài báo gần đây rằng gợi ý rằng dấu gạch dưới trong tên trang có thể gây ra vấn đề trong các tập tin cookie, tôi đã không nhìn vào điều này, nhưng nó có thể là giá trị kiểm tra.

Ngoài ra, bạn có xóa cookie của mình nếu người dùng không chọn được ghi nhớ không?

Tôi đã xem một ví dụ cũ gần đây trên MSDN hiển thị phương pháp xóa sẽ làm đổ phiên của bạn ... read the article.

Nếu vậy hãy chắc chắn chỉ xóa cookie để đăng nhập nếu không bạn có thể mất cookie chứa sessionid.

A (rất) dịch nhanh chóng vào CSharp của mã bài viết:

for (int i = 0; i < limit; i++) 
    { 
     cookieName = Request.Cookies[i].Name; 
     aCookie = new HttpCookie(cookieName); 
     aCookie.Expires = DateTime.Now.AddDays(-1); 
     Response.Cookies.Add(aCookie); 
    } 

Với giải pháp hữu thêm một tấm séc vào tên cookie.

for (int i = 0; i < limit; i++) 
    { 
     cookieName = Request.Cookies[i].Name; 
     if (cookieName == "username") 
     { 
      aCookie = new HttpCookie(cookieName); 
      aCookie.Expires = DateTime.Now.AddDays(-1); 
      Response.Cookies.Add(aCookie); 
     } 
    } 

Cũng đừng quên bạn có thể sử dụng các khóa con trong cookie.

+0

Tuyệt vời cảm ơn bạn, các biến phiên đã bị mất khi tôi 'không nhớ' cookie không tên, tôi đã xóa tất cả các đối tượng cookie bao gồm id phiên. Cám ơn bạn một lần nữa. –

2

Bit một shot hoang dã của , nhưng bạn chuyển từ https sang http phải không? Ví dụ. biểu mẫu đăng nhập là https, trang sau là http

Nếu hầu hết trình duyệt sẽ bỏ cookie phiên.

Cảm ơn, Fran

+0

không sử dụng https, điều này không áp dụng. cảm ơn bạn. –

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