Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 中断servlet筛选器工作_Java_Jakarta Ee_Servlet Filters - Fatal编程技术网

Java 中断servlet筛选器工作

Java 中断servlet筛选器工作,java,jakarta-ee,servlet-filters,Java,Jakarta Ee,Servlet Filters,我有securityauthorizationfilter和以下代码部分: for(String anonymousRequestURI : anonymousRequestURIs) { if(httpRequest.getRequestURI().equals(anonymousRequestURI)) { //allow request } } String authToken = getTokenFromRequest(httpRequest);

我有
securityauthorizationfilter
和以下代码部分:

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

若equals为真,我需要跳过所有下一步的过滤操作,并向控制器发送请求。但是,如果我编写
filterChain.doFilter(servletRequest,servletResponse)
,则没有结果。筛选器将继续操作以查找令牌。我怎样才能打破过滤器?

如果
打破
不能满足您的需要,您可以这样更改循环:

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

虽然(!httpRequest.getRequestURI().equals(anonymousRequestURI)&&i正如我从您的评论中理解的那样,如果匿名请求URI的条件为true,您希望“中断”当前筛选器。您只需在调用
chain.doFilter()
返回;


干杯,

不,它只中断循环并继续尝试获取authToken。@Squeez会像在我的编辑中一样更改您的循环。如果等于真的,我需要从筛选器中断并向控制器发送请求。您的意思是要跳过筛选器链的其余部分还是只停止此筛选器?@AndersR.Bystrup我想停止此操作。谢谢。现在
chain.doFilter(…);
正在工作……很有趣……如果早些时候它不工作,怎么办?:)
for ( String uri : anonURIs ) {
    if ( ... ) {
        chain.doFilter( ... );
        return;
    }
}

String authToken = getTokenFromRequest( httpRequest );
...