SORU
16 Kasım 2010, Salı


Geri çık sonra önceki güvenli sayfasına gidip gelen kullanıcı önlemek

Son kullanıcıya kısıtlı sayfaya geri çıkış/signout sonra gitmek olmamalı ihtiyacı var. Ama şu anda son kullanıcının tarayıcı geri düğmesi ile bunu yapmak mümkün.

Temel olarak, aşağıdaki elde etmek istiyorum

  1. Son kullanıcı erişimi kısıtlı sayfaya geri tarayıcı signout sonra düğmesini kullanarak erişmek mümkün olmamalıdır.
  2. Son kullanıcı signout sonra tarayıcı geçmişini herhangi bir yasak URL erişim mümkün olmamalıdır.

Bu nasıl en iyi yapabilirim ki? Bu JavaScript ile yapılabilir mi?

CEVAP
16 Kasım 2010, Salı


Sanave olmamalıdırtarayıcı Geri düğmesini devre dışı bırakın. O kadar da kötü bir kullanıcı deneyimi için. JavaScript kesmek var, ama güvenilir değildir ve aynı zamanda müşteri JS devre dışı olduğunda çalışmaz.

Beton sorunun geri düğmesi ile talep ettiğiniz sayfayı tarayıcı önbelleğini yerine direk sunucudan gelen yüklenmiş olmasıdır. Bu gerçekten sunucudan geliyor yanlış düşünüyor s/çünkü aslında zararsız, ama son kullanıcıya gerçekten kafa karıştırıcı.

Sadece tarayıcı talimat gerekiyordeğilönbellek sınırlı JSP sayfaları. Bu şekilde tarayıcı önbelleğinden sunucudan yerine sayfa istemek zorunda kalır ve bu nedenle sunucu üzerindeki tüm giriş kontrolleri yürütülür. Bu doFilter() yöntemi necessary response headers ayarlar: Filter kullanarak yapabilirsiniz

@WebFilter
public class NoCacheFilter implements Filter {

    @Override
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
        HttpServletResponse response = (HttpServletResponse) res;

        response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
        response.setHeader("Pragma", "no-cache"); // HTTP 1.0.
        response.setDateHeader("Expires", 0); // Proxies.

        chain.doFilter(req, res);
    }

    // ...
}

Bu ilgi url-pattern örneğin *.jsp Filter göster.

@WebFilter("*.jsp")

Ya eğer güvenli sayfalarda bu kısıtlama sadece koymak istiyorsanız, o zaman tüm bu güvenli sayfaları kapsayan bir URL deseni belirtmeniz gerekir. Klasör içinde iken örneğin, /app /app/* URL deseni belirtmeniz gerekir.

@WebFilter("/app/*")

Hatta daha fazla, aynı oturum açmış kullanıcının varlığı kontrol ediyorsun nereye kadar Filter bu işi yapabilirsin.

Tarayıcı önbelleğini test etmeden önce! temizlemek için unutma ;)

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Andrey Menshikov

    Andrey Mensh

    28 Ocak 2012
  • George McCarron

    George McCar

    29 Mayıs 2013
  • ThePhestor

    ThePhestor

    22 Mart 2011