如何从springSessionRepositoryFilter中排除资源?

时间:2017-01-13 13:08:44

标签: java spring jsp spring-security redis

我们正在尝试将遗留项目转换为更现代的项目。它是一个基于servlet的应用程序,使用jsp,我们正在向Spring迈进。我们为jsp-s提供服务,它们包含许多静态资源。 我们使用Redis作为会话存储,并将其映射为过滤器:

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

...

@Configuration
@EnableRedisHttpSession(maxInactiveIntervalInSeconds = SpringSessionConfig.MAX_INACTIVE_INTERVAL_IN_SECONDS)
@PropertySource(value = "classpath:redis.properties")
public class SpringSessionConfig { ... }

静态资源分布在许多不同的目录中,问题在于,此过滤器针对每个资源运行,这是完全可以理解的。

是否有一种从这种网址模式中排除资源的智能方法?或者这个RepositoryFilter的一些配置?

我提出的唯一解决方案是做一个大的重构,并为静态资源创建适当的命名空间,但是现在,这太费劲了。

我还为Spring配置添加了资源处理程序,但这里忽略了它。

1 个答案:

答案 0 :(得分:0)

我认为您可以扩展springSessionRepositoryFilter以实现自己的过滤器,然后在doFilterInternal方法中执行排除资源,并配置springSessionRepositoryFilter bean手册而不是{{1注释,然后将过滤器bean名称配置到web.xml。