使用Stripes Interceptor来阻止访问其他servlet

时间:2012-03-20 13:50:29

标签: java servlets stripes

我正在使用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)?

2 个答案:

答案 0 :(得分:1)

我不知道你是否可以将Stripes拦截器应用于非Stripes servlet。

但我很确定你不应该这样做。

Stripes拦截器特定于Stripes和Stripes的请求生命周期。对普通servlet的请求不是Stripes请求,并且不会经历此生命周期,即使它通过Stripes过滤器也是如此。这样的请求不应该使用Stripes拦截器,即使这是可能的。

我建议你将Stripes拦截器中的授权代码分解为Stripes-anostic服务类,然后编写一个使用该类的标准过滤器。你的Stripes拦截器和你的过滤器就是非常小的代码,可以传递给服务。

答案 1 :(得分:1)

Stripes过滤器不能像这样使用,因为Stripes过滤器实际上是Stripes前端控制器,它只分配给动作bean和可能的Stripes拦截器。

正如您已经假设的那样,您需要一个常规的servlet过滤器。