2014-11-05 57 views
0

我想使用doFilter和我的web.xml頁面強制用戶登錄訪問任何「安全」頁面。doFilter JSF用戶身份驗證

我找到一個例子here,我已經實現了它。雖然我有一個小問題。當我將過濾器定義放入web.xml時,整個網站無法加載。我相信這是因爲我沒有適當的類路徑到包含過濾器的java文件。我向我展示了我的項目瀏覽器旁邊的web.xml頁面。 Auth Filter我希望你能幫助我與所需<filter-class> </filter-class>

類路徑中我也顯示我doFilter method

@Override 
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { 
    UserBean userBean = (UserBean)((HttpServletRequest)request).getSession().getAttribute("userBean"); 

    if(userBean == null || !userBean.isSuccessfullLogin()){ 
     String contextPath = ((HttpServletRequest)request).getContextPath(); 
     ((HttpServletResponse)response).sendRedirect(contextPath + "/index.xhtml"); 
    } 
    chain.doFilter(request, response); 
} 

到目前爲止,我的服務器的工作原理,網站運行的其餘部分,但我不能讓過濾器。任何建議都被接受!

謝謝!

+0

你的過濾器是在'Filter'文件夾(讀作Filter' Java包),你的'過濾器-class'定義必須是完全限定的類名(FQN):'Filter.AuthenticationFilter'。文件的屏幕截圖比實際文件更容易閱讀。您應該在下次發佈文件的內容 – kolossus 2014-11-05 16:11:53

+0

這正是我在web.xml中的FQN所設置的內容。過濾器雖然從未被調用過。 – 2014-11-07 21:06:37

回答

0

我現在還沒有寫任何過濾器,但通常如果你在web.xml中定義一個類,它被命名爲

package.Class 

因此,如果您AuthenticationFilter類是在包「我的。 filter.package」像這樣:

package my.filter.package; 
public class AuthenticationFilter {...} 

過濾器類的聲明應該是

<filter-class>my.filter.package.AuthenticationFilter</filter-class> 
0

我沒有得到它的工作 昨晚。 Filters.AuthenticationFilter起作用。這是我的網址模式,這是錯誤的。

而不必爲/安全/ *我需要它是我的URL模式/面/安全/ *