По умолчанию используется AntPathRequestMatcher.Если вы добавите другой шаблон
<intercept-url pattern="/logList/*" access="ROLE_ADMIN" />
, он будет работать.
Вот тесты (обратите внимание, что с RegexRequestMatcher один и тот же шаблон работает как для / logList /, так и / logList):
@Test
public void antTest1() throws Exception {
AntPathRequestMatcher pathMatcher = new AntPathRequestMatcher("/loglist*");
MockHttpServletRequest mockRequest = new MockHttpServletRequest();
mockRequest.setScheme("http");
mockRequest.setPathInfo("/logList");
Assert.assertThat(pathMatcher.matches(mockRequest), is(true));
}
@Test
public void antTest2() throws Exception {
AntPathRequestMatcher pathMatcher = new AntPathRequestMatcher("/loglist/*");
MockHttpServletRequest mockRequest = new MockHttpServletRequest();
mockRequest.setScheme("http");
mockRequest.setPathInfo("/logList/");
Assert.assertThat(pathMatcher.matches(mockRequest), is(true));
}
@Test
public void regexTest3() throws Exception {
RegexRequestMatcher pathMatcher = new RegexRequestMatcher("/logList.*", "GET");
MockHttpServletRequest mockRequest = new MockHttpServletRequest();
mockRequest.setScheme("http");
mockRequest.setMethod("GET");
mockRequest.setPathInfo("/logList/");
Assert.assertThat(pathMatcher.matches(mockRequest), is(true));
}
@Test
public void regexTest4() throws Exception {
RegexRequestMatcher pathMatcher = new RegexRequestMatcher("/logList.*", "GET");
MockHttpServletRequest mockRequest = new MockHttpServletRequest();
mockRequest.setScheme("http");
mockRequest.setMethod("GET");
mockRequest.setPathInfo("/logList");
Assert.assertThat(pathMatcher.matches(mockRequest), is(true));
}
Чтобы использовать RegexRequestMatcher, добавьте атрибут 'request-matcher' в http и установите его значение в 'regex':
<http auto-config="true" request-matcher="regex">