1
我使用JAX-RS Jersey作爲我的控制器,JSP用於我的視圖。這裏有一個例子:Java Servlets,JAX-RS - 獲取基於表單的認證工作時出現問題
@Path("/")
@Stateless
public class HomeController {
@Context
private HttpServletRequest request;
@EJB
private EmployeeServiceLocal employeeService;
@GET
public Viewable getHomePage() {
Employee employee = employeeService.getEmployeeById(1);
request.setAttribute("employee", employee);
return new Viewable("/home.jsp", null);
}
}
一切都已經運行很好,很正常,直到我試圖用JAAS來實現認證。我相信發生的事情是我的過濾器阻止服務器處理我的j_security_check請求(我正在使用基於jdbcRealm的基於表單的身份驗證)。我相信這是因爲我在提交我的登錄表單時出現以下錯誤:
The requested resource() is not available.
這是否有意義?我如何讓我的過濾器不適用於/ j_security_check?
這是在web.xml我的過濾器配置
<filter>
<filter-name>Jersey Filter</filter-name>
<filter-class>com.sun.jersey.spi.container.servlet.ServletContainer</filter-class>
<init-param>
<param-name>com.sun.jersey.config.feature.Redirect</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>cheetah.frontend.controllers</param-value>
</init-param>
<!-- pass to next filter if Jersey/App returns 404 -->
<init-param>
<param-name>com.sun.jersey.config.feature.FilterForwardOn404</param-name>
<param-value>true</param-value>
</init-param>
<!-- match regex to determine if Jersey/App is invoked or pass to next filter -->
<init-param>
<param-name>com.sun.jersey.config.property.WebPageContentRegex</param-name>
<param-value>/(images|css|jsp)/.*</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Jersey Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
感謝您的幫助。