【发布时间】:2023-03-22 04:54:01
【问题描述】:
我有以下 servlet 定义:
<servlet>
<servlet-name>licenseGenService</servlet-name>
<servlet-class>org.springframework.web.context.support.HttpRequestHandlerServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>licenseGenService</servlet-name>
<url-pattern>/remoting/licensing</url-pattern>
</servlet-mapping>
<!-- Restful API Servlet-->
<servlet>
<servlet-name>licensingRestService</servlet-name>
<servlet-class>
com.sun.jersey.spi.spring.container.servlet.SpringServlet
</servlet-class>
<init-param>
<param-name>
com.sun.jersey.config.property.packages
</param-name>
<param-value>
com.mydomain.licensing.rest
</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>licensingRestService</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
然后是以下安全过滤器:
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>
org.springframework.web.filter.DelegatingFilterProxy
</filter-class>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
因此,根据我的阅读,/* 的 url 模式会被具有显式 url 的模式覆盖。这适用于我的 servlet。事情是,我不想要licenseGenService servlet 所需的基本身份验证。如何将安全过滤器定义为仅适用于 REST servlet,而不适用于 licenseGenService?
【问题讨论】:
-
ava to Java remoting servlet 是什么意思。
-
抱歉,
licenseGenServiceservlet。我将进行编辑以使其更清晰。这是一个例子,我知道我要输入什么,但我忘记了观众 -
您能否将licensingRestService 映射到/api,然后将安全过滤器应用到/api?否则,您将需要以编程方式过滤掉过滤器中的 /remoting/licensing,然后继续使用安全过滤器(即过滤器链)。例如,让您的过滤器采用忽略模式参数,然后在转发到链中的下一个过滤器之前检查您的过滤器是否在忽略模式中。
标签: java spring servlets spring-security servlet-filters