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
- 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.
- 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
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 ;)
Yöntem F12 git -> daha önceki yönte...
Nasıl formu gönderdikten sonra bir Wor...
Nasıl güvenli bir şekilde özel WebAPİ ...
Nasıl bir geri al `git commit` yerel v...
İllegalStateException: önlemek için Na...