我有SecurityAuthorisationFilter
以及代码的以下部分:
for(String anonymousRequestURI : anonymousRequestURIs) {
if(httpRequest.getRequestURI().equals(anonymousRequestURI)) {
//allow request
}
}
String authToken = getTokenFromRequest(httpRequest);
如果equals为true,我需要跳过所有下一个过滤操作并向控制器发送请求。但是,如果我写filterChain.doFilter(servletRequest, servletResponse)
,就没有结果。过滤器继续操作以查找令牌。如何突破过滤器?
答案 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);