安全

2013-11-09 63 views
0

我使用Servlet過濾器用於安全應用Servlet過濾器,安全

<filter> 
    <filter-name>HelloFilter</filter-name> 
    <filter-class>com.sarp.filter.HelloFilter</filter-class> 
    <init-param> 
     <param-name>login_form</param-name> 
     <param-value>/loginForm.jsp</param-value> 
    </init-param> 
</filter> 
<filter-mapping> 
    <filter-name>HelloFilter</filter-name> 
    <url-pattern>*.jsp</url-pattern> 
</filter-mapping> 

但如果我的Servlet中使用jsp文件,我不能趕上他們

private void execute(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException { 
    getServletContext().getRequestDispatcher("/deniz.jsp").forward(request, response); 

例如deniz.jsp出現不aouthentication , 有沒有解決辦法? 感謝

+0

該Servlet過濾器不是一種安全的過濾器。 – 2013-11-09 21:08:12

+0

在任何資源上使用'forward'都會在內部轉發請求**而不調用過濾器。要麼擴展匹配模式以捕獲servlet的url或者在servlet中實現_security_代碼(順便說一句,這不是個好主意)。 – jCoder

+0

你爲安全提供什麼? – Poyraz

回答

1

使用調度標籤在filter-mapping

<filter-mapping> 
    <filter-name>HelloFilter</filter-name> 
    <url-pattern>*.jsp</url-pattern> 
    <dispatcher>FORWARD</dispatcher> 
    <dispatcher>REQUEST</dispatcher> 
</filter-mapping> 

這些信息可以在specification的部分6.2.5找到指定FORWARD行爲。

新自Java Servlet規範版本2.4是配置過濾器的能力 被向前下請求調度器()調用 和include()調用。

通過在部署描述符中的新元件, 開發者可以指示用於過濾器映射他是否想 濾波器時要被施加到的請求:

  1. 該請求被下加工使用forward()調用來表示與該組件匹配的Web組件的請求調度程序。

這是通過一個元素指示與值FORWARD

+0

您需要使用 REQUE£ST否則只有轉發的請求才會被捕獲。我懷疑INCLUDE也是必需的。錯誤和異步可能不會,但因爲它是一個安全過濾器... –

+0

@MarkThomas感謝您的協助。 –