打破servlet-filter工作

时间:2015-04-29 10:59:48

标签: java java-ee servlet-filters

我有SecurityAuthorisationFilter以及代码的以下部分:

for(String anonymousRequestURI : anonymousRequestURIs) {
     if(httpRequest.getRequestURI().equals(anonymousRequestURI)) {
         //allow request
     }
 }
 String authToken = getTokenFromRequest(httpRequest);

如果equals为true,我需要跳过所有下一个过滤操作并向控制器发送请求。但是,如果我写filterChain.doFilter(servletRequest, servletResponse),就没有结果。过滤器继续操作以查找令牌。如何突破过滤器?

2 个答案:

答案 0 :(得分:2)

正如我从你的评论中所理解的那样,你希望"突破"如果关于匿名请求URI的条件为真,则为当前过滤器。调用return;后,您可以chain.doFilter()

for ( String uri : anonURIs ) {
    if ( ... ) {
        chain.doFilter( ... );
        return;
    }
}

String authToken = getTokenFromRequest( httpRequest );
...

干杯,

答案 1 :(得分:1)

如果break无法满足您的需求,您可以像这样更改循环:

int i=0;
do {
      anonymousRequestURI = anonymousRequestURIs[i];
      i++;
while(!httpRequest.getRequestURI().equals(anonymousRequestURI) && i<anonymousRequestURIs.length);
String authToken = getTokenFromRequest(httpRequest);