Skip to content

Commit 4a20bf0

Browse files
zAlbeebdemers
authored andcommitted
Backport SHIRO-825
This was causing "java.lang.IllegalArgumentException: There is no configured chain under the name/key"
1 parent 9f8e5c6 commit 4a20bf0

File tree

2 files changed

+43
-3
lines changed

2 files changed

+43
-3
lines changed

web/src/main/java/org/apache/shiro/web/filter/mgt/PathMatchingFilterChainResolver.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ public FilterChain getChain(ServletRequest request, ServletResponse response, Fi
126126
log.trace("Matched path pattern [{}] for requestURI [{}]. " +
127127
"Utilizing corresponding filter chain...", pathPattern, Encode.forHtml(requestURINoTrailingSlash));
128128
}
129-
return filterChainManager.proxy(originalChain, requestURINoTrailingSlash);
129+
return filterChainManager.proxy(originalChain, pathPattern);
130130
}
131131
}
132132
}

web/src/test/java/org/apache/shiro/web/filter/mgt/PathMatchingFilterChainResolverTest.java

Lines changed: 42 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,6 @@
2020

2121
import org.apache.shiro.util.AntPathMatcher;
2222
import org.apache.shiro.web.WebTest;
23-
import org.apache.shiro.web.util.WebUtils;
24-
import org.hamcrest.Matchers;
2523
import org.junit.Before;
2624
import org.junit.Test;
2725

@@ -263,4 +261,46 @@ public void testMultipleChainsPathEndsWithSlash() {
263261
assertThat(resolved, notNullValue());
264262
verify(request);
265263
}
264+
265+
/**
266+
* Test asserting <a href="https://issues.apache.org/jira/browse/SHIRO-825">SHIRO-825<a/>.
267+
*/
268+
@Test
269+
public void testGetChainWhenPathEndsWithSlash() {
270+
HttpServletRequest request = createNiceMock(HttpServletRequest.class);
271+
HttpServletResponse response = createNiceMock(HttpServletResponse.class);
272+
FilterChain chain = createNiceMock(FilterChain.class);
273+
274+
//ensure at least one chain is defined:
275+
resolver.getFilterChainManager().addToChain("/resource/*/book", "authcBasic");
276+
277+
expect(request.getServletPath()).andReturn("");
278+
expect(request.getPathInfo()).andReturn("/resource/123/book/");
279+
replay(request);
280+
281+
FilterChain resolved = resolver.getChain(request, response, chain);
282+
assertNotNull(resolved);
283+
verify(request);
284+
}
285+
286+
/**
287+
* Test asserting <a href="https://issues.apache.org/jira/browse/SHIRO-825">SHIRO-825<a/>.
288+
*/
289+
@Test
290+
public void testGetChainWhenPathDoesNotEndWithSlash() {
291+
HttpServletRequest request = createNiceMock(HttpServletRequest.class);
292+
HttpServletResponse response = createNiceMock(HttpServletResponse.class);
293+
FilterChain chain = createNiceMock(FilterChain.class);
294+
295+
//ensure at least one chain is defined:
296+
resolver.getFilterChainManager().addToChain("/resource/*/book", "authcBasic");
297+
298+
expect(request.getServletPath()).andReturn("");
299+
expect(request.getPathInfo()).andReturn("/resource/123/book");
300+
replay(request);
301+
302+
FilterChain resolved = resolver.getChain(request, response, chain);
303+
assertNotNull(resolved);
304+
verify(request);
305+
}
266306
}

0 commit comments

Comments
 (0)