2013-09-26 55 views
1

登錄頁面當登出頁面用戶點擊它帶他去當用戶單擊後退按鈕它之前帶他到頁面login.xhtml.Now註銷,我試圖通過使用已在許多職位被提到的doFilter避免這一點,我的代碼是:重定向到時候用戶註銷後點擊後退按鈕在JSF

HttpServletRequest request = (HttpServletRequest) req; 
    HttpServletResponse response = (HttpServletResponse) res; 
    response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); 
    response.setHeader("Pragma", "no-cache"); // HTTP 1.0. 
    response.setDateHeader("Expires", 0); // Proxies. 
    chain.doFilter(req, res); 

但它並沒有幹活也看過一個帖子,如果URL具有斷點續傳那麼這是行不通的?你可以建議我如何才能避免這種行爲,使用戶進入登錄頁面時,他退出後點擊後退按鈕。

+0

什麼是您的網絡過濾器的URL模式? – skuntsel

+0

我用/ faces/*作爲URL模式。 – Valla

+0

您是否在測試新過濾器之前清除了瀏覽器緩存?該網址格式是否涵蓋這些受限制的網頁? – BalusC

回答

1

我不知道你有什麼問題的原因,但請注意,在您的網頁過濾器,你應該跳過JSF資源的任何方式follwing過濾器中的所有頁面.xhtml爲我工作的嘗試

import java.io.IOException; 
import javax.faces.application.ResourceHandler; 
import javax.servlet.Filter; 
import javax.servlet.FilterChain; 
import javax.servlet.FilterConfig; 
import javax.servlet.ServletException; 
import javax.servlet.ServletRequest; 
import javax.servlet.ServletResponse; 
import javax.servlet.annotation.WebFilter; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

/** 
* Servlet Filter implementation class NoCacheFilter 
*/ 
    @WebFilter(urlPatterns = {"*.xhtml"}) 
    public class NoCacheFilter implements Filter { 

/** 
* Default constructor. 
*/ 
public NoCacheFilter() { 
    // TODO Auto-generated constructor stub 
} 

/** 
* @see Filter#destroy() 
*/ 
public void destroy() { 
    // TODO Auto-generated method stub 
} 

/** 
* @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain) 
*/ 

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

    if (!req.getRequestURI().startsWith(req.getContextPath() + ResourceHandler.RESOURCE_IDENTIFIER)) { // Skip JSF resources (CSS/JS/Images/etc) 
     res.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1. 
     res.setHeader("Pragma", "no-cache"); // HTTP 1.0. 
     res.setDateHeader("Expires", 0); // Proxies. 
    } 

    chain.doFilter(request, response); 
} 
/** 
* @see Filter#init(FilterConfig) 
*/ 
public void init(FilterConfig fConfig) throws ServletException { 
    // TODO Auto-generated method stub 
} 

}

+0

我試着用你在上面,它仍然力工作提到的代碼。有什麼我錯過了嗎? – Valla

+0

同樣要添加我的儀表板有一些dat在登錄後顯示。當我們註銷並點擊返回按鈕時,數據不會顯示,只顯示頁眉,頁腳和導航欄。 – Valla

相關問題