在会话启动时动态添加/删除servlet过滤器

问题描述:

我的JSF应用程序使用JCIFS的活动目录验证模块。 但JCIFS过滤器阻止IE8的ICEpush相关的东西。 我想在验证后删除JCIFS过滤器(如果可能的话)。 所以它是基于会话的。当会话状态和认证完成后,我可以应用过滤器吗?我可以从当前会话中删除它吗?所以它不会在当前会话之后过滤任何请求。在会话启动时动态添加/删除servlet过滤器

谢谢。

您不能动态地添加或删除过滤器,但可以编写一个新的过滤器来扩展JCIFS,并且如果会话已通过身份验证,则会跳过其特殊处理(即立即调用chain.doFilter)。

+0

这不是答案本身的一部分,但可以澄清:动态添加/删除过滤器不受Servlet API支持(除了在使用Servlet 3.x启动时),但即使它是,也不会帮助你与你的用例,因为过滤器是全球性的(换句话说,他们不绑定到一个单一的会议)。删除过滤器将删除所有会话,并进行身份验证。 –