允许特定URL模式绕过Spring安全登录
我有一个受spring security保护的web应用程序。然而,有一个特定的URL模式我不想对其应用任何安全性。我试过几种不同的方法,但似乎都不管用。每当我尝试转到该特定URL时,我都会被转发到允许特定URL模式绕过Spring安全登录,spring,spring-security,Spring,Spring Security,我有一个受spring security保护的web应用程序。然而,有一个特定的URL模式我不想对其应用任何安全性。我试过几种不同的方法,但似乎都不管用。每当我尝试转到该特定URL时,我都会被转发到spring\u security\u login页面 web.xml的一部分: <!-- NOT SECURE --> <servlet> <servlet-name>dontSecureServlet</servlet-name> &
spring\u security\u login
页面
web.xml的一部分:
<!-- NOT SECURE -->
<servlet>
<servlet-name>dontSecureServlet</servlet-name>
<servlet-class>org.com.gov.lol.DontSecure</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dontSecureServlet</servlet-name>
<url-pattern>/dontSecure</url-pattern>
</servlet-mapping>
<!-- SECURE -->
<servlet>
<servlet-name>secureServlet</servlet-name>
<servlet-class>org.com.gov.lol.Secure</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>secureServlet</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>
<!-- SECURITY FILTER -->
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>ERROR</dispatcher>
</filter-mapping>
dontSecureServlet
org.com.gov.lol.DontSecure
1.
dontSecureServlet
/dontSecure
secureServlet
org.com.gov.lol.Secure
1.
secureServlet
*.htm
springSecurityFilterChain
/*
要求
错误
security-context.xml的一部分:
<!-- This did not work -->
<http pattern="/dontSecure" security="none" />
<http entry-point-ref="entryPoint" use-expressions="true">
<custom-filter ref="customFilter" position="PRE_AUTH_FILTER" />
<!-- I've also tried adding the following here (with no luck) -->
<intercept-url pattern="/dontSecure" filters="none" />
<intercept-url pattern="/secureMe" requires-channel="https" />
<intercept-url pattern="/secureUs" requires-channel="https" />
</http>
<!-- I have even tried adding a separate <http> block just for /dontSecure -->
<http>
<intercept-url pattern="/dontSecure" security="none" />
</http>
同样,通过上述配置的任意组合,url/dontSecure
仍然会转发到spring登录页面
你知道是什么导致了这一切吗
干杯
更新
从服务器日志来看,/dontSecure
url似乎正在加载dontSecureServlet
。但是,似乎生成了一个错误,我被禁止进入404错误页面(配置为/404.htm,这必须是使我返回登录页面的原因)
我已经从web.xml中添加了一些我起初认为不相关的额外剪贴画。尝试使用此剪贴画更改配置中的拦截url:
<intercept-url pattern="/dontSecure/**" access="permitAll" />
不在单独的
标记中问题可能是由于您的自定义筛选器应用于所有路径。您必须找到一种只为特定路径注册自定义过滤器的方法(我可以在SpringBoot中向您展示如何做到这一点,但您可能没有使用它) 谢谢你的回答。我删除了另一个配置并将您的建议添加到更大的
块中,但我仍然被转发到登录页面我根据您的建议更新了配置,并且仍然被转发到登录页面,不幸的是,我没有使用spring boot。不过,这是一个有趣的建议,我会研究一下it@Mac如果您刚刚开始项目,那么切换到boot应该不会太困难。很抱歉,这已经是我团队中的一个现有项目。我只是想增加一些额外的功能。