我正在使用Stripes 1.5而我正在使用拦截器(基于this example)来防止未经授权访问*.action
个页面。
现在我想使用相同的拦截器来阻止访问servlet。
我已将此添加到web.xml(DisplayChart
是我要保护的servlet):
<filter-mapping>
<filter-name>StripesFilter</filter-name>
<servlet-name>DisplayChart</servlet-name>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
但它不起作用,拦截器intercept
方法在访问DisplayChart
servlet路径时不执行(即使我@Intercepts
所有LifeCycleStage
)。
当接收另一个servlet时,有没有办法让拦截器执行?或条纹过滤器不打算以这种方式使用(我将不得不使用普通的Filter
)?
答案 0 :(得分:1)
我不知道你是否可以将Stripes拦截器应用于非Stripes servlet。
但我很确定你不应该这样做。
Stripes拦截器特定于Stripes和Stripes的请求生命周期。对普通servlet的请求不是Stripes请求,并且不会经历此生命周期,即使它通过Stripes过滤器也是如此。这样的请求不应该使用Stripes拦截器,即使这是可能的。
我建议你将Stripes拦截器中的授权代码分解为Stripes-anostic服务类,然后编写一个使用该类的标准过滤器。你的Stripes拦截器和你的过滤器就是非常小的代码,可以传递给服务。
答案 1 :(得分:1)
Stripes过滤器不能像这样使用,因为Stripes过滤器实际上是Stripes前端控制器,它只分配给动作bean和可能的Stripes拦截器。
正如您已经假设的那样,您需要一个常规的servlet过滤器。