【问题标题】:How to set order for SessionRepositoryFilter?如何设置 SessionRepositoryFilter 的顺序?
【发布时间】:2015-01-29 06:50:12
【问题描述】:

我正在使用我的 Web 应用程序评估 spring-session。在对 Web 应用程序的第一次请求期间,正在为单个客户端创建多个 httpsession。调试后发现问题是,响应是在过滤器链中较早的被 ShallowEtagHeaderFilter 在到达 SessionRepositoryFilter 之前提交的,所以添加到响应中的 cookie 并没有发送到客户端。因此,每个进一步的 ajax 请求都会创建一个新会话,但会话 ID 未在 cookie 中设置。

我正在尝试将 SessionRepositoryFilter 移到 ShallowEtagHeaderFilter 之后。有什么办法吗?

过滤器配置:

@Bean
public SessionRepositoryFilter sessionFilter(RedisOperationsSessionRepository sessionRepository) {
    HttpSessionStrategy cookieStrategy = new CookieHttpSessionStrategy();
    ((CookieHttpSessionStrategy) cookieStrategy).setCookieName("JSESSIONID");
    SessionRepositoryFilter sessionRepositoryFilter = new SessionRepositoryFilter(sessionRepository);
    sessionRepositoryFilter.setHttpSessionStrategy(cookieStrategy);
    return sessionRepositoryFilter;
}

过滤器注册者:

public void onStartup(ServletContext servletContext) throws ServletException {
    servletContext.addFilter("sessionFilter", DelegatingFilterProxy.class)
            .addMappingForUrlPatterns(EnumSet.of(DispatcherType.REQUEST), false, "/*");
}

【问题讨论】:

    标签: spring spring-mvc spring-session


    【解决方案1】:

    正如您在评论中提到的,您可以使用web.xml 为任何url-pattern 注册一个过滤器:

    <filter>
        <filter-name>sessionFilter</filter-name>
        <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>sessionFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    

    或者以 spring 的方式,您可以在应用程序配置类中执行此操作,如下所示:

    @Configuration
    public class WebAppConfig implements WebApplicationInitializer {
        @Override
        public void onStartup(ServletContext servletContext) {
            servletContext
                .addFilter("sessionFilter", DelegatingFilterProxy.class)
                .addMappingForUrlPatterns(null, false, "/*");
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-06
      • 2020-01-02
      相关资源
      最近更新 更多