所以我有一个现有的内部应用程序框架,它只需要消费应用程序在其web.xml中注册一个过滤器 - 一个引用CompositeFilter的DelegatingFilterProxy。作为CompositeFilter的一部分,我们按特定顺序(一些自定义,springSecurityFilterChain等)提供了大量其他过滤器。
我现在想把spring-session加入混合但我不想使用WebApplicationInitializer(我需要支持servlet 2.5容器),我也不想让每个应用程序都修改他们的web.xml。我想将它作为内部框架的一部分提供,只需将springSessionRepositoryFilter放入CompositeFilter即可。看起来很简单 - 但似乎无论我把它放在哪个位置(我们目前有11个左右的其他过滤器),事情似乎都不起作用。我们的身份验证似乎打破了,事情就是行不通。如果我手动将springSessionRepositoryFilter直接添加到web.xml,那么一切正常。所以我很困惑。有什么帮助吗?
答案 0 :(得分:0)
我明白了。 SessionRepositoryFilter必须位于过滤器链中的RequestContextFilter之前。还必须确保在Spring安全性中关闭禁用url重写,因为springSecurityFilterChain将在SessionRepositoryFilter之后出现。如果不这样做,则使用_s参数重写URL将无效。