Java Spring、CORS和j_Spring_security_注销

Java Spring、CORS和j_Spring_security_注销,java,spring,cors,Java,Spring,Cors,我需要使用带有Spring Security的CORS。我已经成功地使用在app-beans.xml中配置的OncePerRequestFilter实现了登录和基本安全性,如下所示: <bean id="corsAwareAuthenticationFilter"class="org.broadinstitute.portal.servlet.CorsAwareAuthenticationFilter"/> <security:http use-expressions="tru

我需要使用带有Spring Security的CORS。我已经成功地使用在app-beans.xml中配置的OncePerRequestFilter实现了登录和基本安全性,如下所示:

<bean id="corsAwareAuthenticationFilter"class="org.broadinstitute.portal.servlet.CorsAwareAuthenticationFilter"/>
<security:http use-expressions="true">
  <security:custom-filter ref="corsAwareAuthenticationFilter" after="PRE_AUTH_FILTER"/>
...

...
在这个问题上,我基本上遵循了以下方法:

我在app-beans.xml中注销的配置如下:

    <security:logout delete-cookies="JSESSIONID"/>

这在没有CORS的情况下运行良好

我的问题是注销。CORS正在停止访问j_spring_security_注销。你知道为什么我的OncePerRequestFilter在登录时被调用,而在注销时没有被调用吗

编辑以添加:


多亏了阿兰·贾尼姆,我解决了这个问题。我需要将我的筛选器设置为在注销筛选器之前调用。以下配置添加解决了该问题:

    <security:custom-filter ref="corsAwareAuthenticationFilter" before="LOGOUT_FILTER"/>
<security:custom-filter ref="corsAwareAuthenticationFilter" before="LOGOUT_FILTER"/>


注意,使用position=“LOGOUT\u FILTER”不起作用,因为这使我的过滤器与Spring LOGOUT\u过滤器处于相同的位置。我的过滤器与注销过滤器的作用不同——我所做的只是添加CORS标题。所以我实际上需要调用Spring注销过滤器。

多亏了alain.janinm,我解决了这个问题。我需要将我的筛选器设置为在注销筛选器之前调用。以下配置添加解决了该问题:

    <security:custom-filter ref="corsAwareAuthenticationFilter" before="LOGOUT_FILTER"/>
<security:custom-filter ref="corsAwareAuthenticationFilter" before="LOGOUT_FILTER"/>


注意,使用position=“LOGOUT\u FILTER”不起作用,因为这使我的过滤器与Spring LOGOUT\u过滤器处于相同的位置。我的过滤器与注销过滤器的作用不同——我所做的只是添加CORS标题。因此,实际上我仍然需要调用Spring注销过滤器。

我认为您必须定义一个位置为“注销过滤器”的自定义过滤器。诸如此类:
alain.janinm,非常感谢您为我指出解决方案。我已编辑我的问题以添加解决方案。不客气!我建议你把你的编辑作为一个答案(你可以回答你自己的问题),然后把它标记为accepetd,这对于将来使用相同pb的用户来说会更清晰。谢谢