小编Thi*_*lak的帖子

如何设置 SessionRepositoryFilter 的顺序?

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

我试图在 ShallowEtagHeaderFilter 之后移动 SessionRepositoryFilter。有没有办法做到这一点?

过滤配置:

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

过滤器由以下人员注册:

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

spring spring-mvc spring-session

6
推荐指数
1
解决办法
2787
查看次数

标签 统计

spring ×1

spring-mvc ×1

spring-session ×1