Spring Security, косые черты и точки в URL

Я использую Spring Security 3.1.4 для защиты приложения Spring MVC 3.2.4, развернутого в Tomcat. У меня есть следующая конфигурация Spring Security:

<http auto-config="true" use-expressions="true">
   <http-basic />
   <logout ... />
   <form-login ... />

   <intercept-url pattern="/" access="isAnonymous() or hasRole('ROLE_USER')" />
   <intercept-url pattern="/about" access="isAnonymous() or hasRole('ROLE_USER')" />
   <intercept-url pattern="/login" access="isAnonymous() or hasRole('ROLE_USER')" />
   <intercept-url pattern="/under-construction" access="isAnonymous() or hasRole('ROLE_USER')" />
   <intercept-url pattern="/admin-task*" access="hasRole('ROLE_USER') and hasRole('ROLE_ADMINISTRATOR')" />
   <intercept-url pattern="/resources/**" access="isAnonymous() or hasRole('ROLE_USER')" />
   <intercept-url pattern="/**" access="hasRole('ROLE_USER')" />
</http>

Я заметил, что шаблоны URL без косой черты (например,/about) не сопоставлять URL с косой чертой (например,/about/) и наоборот. Другими словами, в Spring Security URL с косой чертой и идентичный URL без косой черты рассматриваются как два разных URL. Проблема может быть решена с помощью двух правил безопасности:

<intercept-url pattern="/about" access="isAnonymous() or hasRole('ROLE_USER')" />
<intercept-url pattern="/about/" access="isAnonymous() or hasRole('ROLE_USER')" />

Есть ли лучшее решение?

я знаю этоpath-type="regex" позволяет определять шаблоны URL с помощью регулярных выражений, но я хотел бы избежать любой ненужной сложности, если это возможно.

Обновить

Как отметил Адам Гент, существует еще одна проблема, связанная с URL-адресами с точкой:/about.foo а также/about Spring MVC обрабатывает один и тот же URL. Однако Spring Security рассматривает их как два разных URL-адреса. Итак, может понадобиться еще одно правило безопасности:

<intercept-url pattern="/about.*" .../>

Ответы на вопрос(2)

Ваш ответ на вопрос