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 );
...