2009-09-25 31 views
5

Tôi đang có trang web trong ASP.NET. Chúng tôi có hai loại đăng nhập 1. Người dùng 2. Quản trịLàm thế nào chúng ta có thể ngừng xem trang web sau khi đăng xuất bằng cách sử dụng trình duyệt quay lại

tôi đang phải đối mặt sau vấn đề trong quá trình thử nghiệm tuyên bố

Vấn đề: Giả sử i LOGGEDIN của thành viên đăng nhập và lướt tất cả các trang, hãy nói ở bất kỳ trang nào của người sử dụng tôi bấm vào nút đăng xuất, nó sẽ chuyển hướng tôi tại trang đăng nhập.

Bây giờ vấn đề xảy ra khi tôi sử dụng trình duyệt quay lại, nó cho tôi thấy trang của người dùng Nhưng thực tế tôi không thể xem trang đó sau khi đăng xuất.

Chức năng của tôi là thích hợp bởi vì nếu tôi nhấp vào trang sau khi đăng xuất, nó sẽ chuyển hướng tôi ở trang đăng nhập, nhưng vấn đề của tôi là tôi không nên truy cập trang web bằng cách sử dụng trình duyệt sau khi đăng xuất. [Như xảy ra trong Google và Yahoo]

Tương tự đang xảy ra với đăng nhập Quản trị viên.

Hãy giúp tôi sắp xếp các vấn đề.

Trả lời

1

Bạn phải đặt sau tôi đoán

Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1)); 
Response.Cache.SetValidUntilExpires(false); 
Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches); 
Response.Cache.SetCacheability(HttpCacheability.NoCache); 
Response.Cache.SetNoStore(); 

Điều này sẽ khiến trang của bạn để gửi lại cũng có khi người dùng nhấn nút quay lại và vì vậy bạn có thể kiểm tra xem liệu anh ấy có còn đăng nhập hay không và trong trường hợp chuyển hướng anh ấy đến một địa điểm khác.

+0

Tôi nên viết dòng mã ở đâu? –

+0

puh đã không thử nó ra bây giờ, nhưng tôi sẽ đặt nó trong PageLoad của Trang nơi bạn cần phải kiểm tra xem người dùng đã đăng nhập. Về cơ bản trang sẽ được hiển thị sau khi người dùng nhấp vào nút quay lại trên một số trang khác . – Juri

+0

Ít nhất hãy đặt bình luận nếu bạn downvote ... – Juri

1

Bạn phải tắt bộ nhớ cache.

public void Page_Load() 
{ 
Response.Cache.SetCacheability(HttpCacheability.NoCache) 
... 
} 
0

Làm cách nào để bạn đăng nhập/đăng xuất? một cách thích hợp để thực hiện điều này là lưu thông tin người dùng vào phiên đăng nhập và xóa phiên đó khi đăng xuất trong kiểm tra phương thức PageLoad của mỗi trang nếu phiên có thông tin hợp lệ hoặc không, nếu không dừng tải trang. theo cách này, khi người dùng đăng xuất và nhấp vào lại phiên nên trống và nó sẽ không tải, sau đó bạn có thể chuyển hướng đến trang đăng nhập. trả lời nếu bạn cần một số mã số

3

Bảng điều khiển là các trang bạn có thể nhấn lại để được lưu vào bộ nhớ cache. Bạn có thể hướng dẫn trình duyệt của mình luôn luôn tìm nạp các trang từ máy chủ mỗi lần.

Bạn sẽ cần phải tạo ra tất cả các tiêu đề sau:

Pragma: no-cache 
Cache-Control: max-age=1 
Expires: Tue, 1 May 1985 01:10:00 GMT 

Vấn đề là không phải tất cả các trình duyệt hỗ trợ tất cả các lựa chọn, do đó bạn phải bao gồm tất cả các tiêu đề để đảm bảo tất cả các trình duyệt không bộ nhớ cache các trang của bạn . Một lý do khác để cần tất cả các tiêu đề này, là trong một số trường hợp ngay cả khi trình duyệt web đang tôn trọng tiêu đề hết hạn, có thể có máy chủ proxy được định cấu hình sai giữa bạn và người dùng vẫn đang lưu trong bộ nhớ cache các trang.

Trong ASP có thể bạn muốn làm một cái gì đó như thế này:

public void Page_Load() { 
    Response.ExpiresAbsolute = DateTime.Now.AddDays(-1d); 
    Response.Expires = -1500; 
    Response.CacheControl = "no-cache"; 
    Response.Cache.SetETag(randomString); 
} 
+1

Tôi đã từng có vấn đề tương tự. Sử dụng một tiêu đề etag ngẫu nhiên cũng giúp ích. Tức là gắn thẻ trang dưới dạng tài nguyên mới cho mọi lượt tải xuống. – user162138

+0

Cảm ơn, Bạn có thể giúp tôi không, làm cách nào tôi có thể tạo các ký tự được đề cập ở trên? Đặc biệt trong ASP.NET –

+0

Tôi có trang chủ cho aspx của tôi. Liên kết đăng xuất có sẵn trong trang chính. Có cần thiết phải viết dòng mã bên trên vào master và aspx không? Liệu nó hoạt động nếu tôi chỉ viết chúng bên trong trang chủ? Phương pháp tiếp cận phù hợp là gì? –

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