2009-09-25 23 views
5

Web sitesi ASP.NET'te yaşıyorum. Biz giriş 1. Kullanıcıların iki tip 2. YöneticiWeb sayfasının görünümünü, tarayıcıyı kullanarak oturum açtıktan sonra nasıl durdurabilirim

Ben

Sorun deyimi test sırasında sorunla aşağıdaki bakan am var: kullanıcının herhangi sayfada diyelim ben tüm sayfaları kullanıcı girişi ile loggedin ve sörf varsayalım çıkış düğmesine tıklıyorum, giriş sayfasında beni yönlendirecek.

Şimdi problem geri tarayıcıyı kullandığınızda, bana kullanıcının sayfa gösterir Ama gerçek i bir çıkıştan sonra o sayfayı görüntülemek için gereken mümkün değildir gelir. çıkış tekrar giriş sayfasında beni yönlendirir sonra ben bir sayfaya tıklamak çünkü eğer

Benim işlevselliği doğru, ama benim sorunum i sistemden çıktıktan sonra geri tarayıcısı kullanarak sayfanıza arazi olmamalıdır olduğunu. [Google ve Yahoo olur gibi] Aynı

Yönetici girişiyle gerçekleşiyor.

sorunları çözmek için bana yardım edin.

cevap

1

Bu da kullanıcı presleri geri göndermek için sayfanızı neden olacaktır ben

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

tahmin aşağıdaki ayarlamak zorunda geri düğmesi ve böylece hala giriş yapmış ve başka bir yere onu yönlendirmek durumunda olup olmadığını kontrol edebilirsiniz.

+0

Yukarıdaki kod satırlarını nereye yazmalıyım? –

+0

puh şimdi denemedim, ancak kullanıcının oturum açıp açmadığını kontrol etmeniz gereken PageLoad of Page (Sayfayı Yükle) sayfasına koyardım. Temel olarak, kullanıcı diğer sayfadaki geri düğmesini tıklattıktan sonra görüntülenecek olan sayfadır. . – Juri

+0

En azından bir oylama yaparsanız yorum yapın ... – Juri

1

Önbelleği devre dışı bırakmalısınız.

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

Oturum açma/oturum kapatma nasılsınız? Bunu yapmanın bir uygun yolu sayfasının yüklenmesini durdurmak değilse, giriş yapıldığında bir oturuma başlamadan önce kullanıcı bilgileri kaydetmek ve oturum geçerli infos varsa veya hiç her sayfanın PageLoad yöntemi testinde Oturum kapatmada o oturumu temizlemektir. bu şekilde, kullanıcı oturumu kapatıp oturumu geri tıkladığında boş olmalı ve yüklenmeyecek ve daha sonra giriş sayfasına yönlendirebilirsiniz. Yanıtınız

3

problelm önbelleğe edilmiş geri basabilirsiniz sayfaları bazı kodlar gerekiyorsa. Tarayıcınıza her zaman ALWAYS'ın sayfaları sunucudan getirmesini sağlayabilirsiniz.

Aşağıdaki başlıkların hepsi oluşturmak gerekir:

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

Eğer sayfaları önbelleğe alamaz tüm tarayıcıları sağlamak için bu başlıkların hepsi dahil etmek zorunda tüm tarayıcılar tüm seçenekleri desteklemez olan sorun .

Tüm bu başlıklara gereksinim duymanın diğer nedeni, bazı durumlarda web tarayıcısının son kullanma başlıklarına saygı duysa bile, siz ve kullanıcı arasında hala sayfaları önbelleğe alan hatalı bir proxy sunucusu olabilir. muhtemelen böyle bir şey yapmak istiyorum ASP olarak

:

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

Aynı sorunu yaşadım. Rastgele bir etag üstbilgisi kullanmak da yardımcı olur. Yani sayfayı her indirme için yeni bir kaynak olarak etiketleyin. – user162138

+0

Teşekkürler, Yardım edebilir misiniz, yukarıda belirtilen karakterleri nasıl oluşturabilirim? Özel ASP.NET –

+0

Benim aspx için ana sayfam var. Çıkış linki ana sayfada mevcuttur. Yukarıdaki kod satırını master ve aspx'in içinde yazmak gerekli midir? Yalnızca ana sayfanın içinde yazarsam işe yarıyor mu? Doğru yaklaşım nedir? –

İlgili konular