Атрибуты шаблона Spring Security <http> и <intercept-url>

Я видел образцы Spring Security OAuth2, это определено в spring-servlet.xml,

   <http pattern="/users/**" create-session="never" entry-point-ref="oauthAuthenticationEntryPoint"
      access-decision-manager-ref="accessDecisionManager" xmlns="http://www.springframework.org/schema/security">
    <anonymous enabled="false" />
    <intercept-url pattern="/photos" access="ROLE_USER,SCOPE_READ" />
    <intercept-url pattern="/photos/trusted/**" access="ROLE_CLIENT,SCOPE_TRUST" />
    <intercept-url pattern="/photos/user/**" access="ROLE_USER,SCOPE_TRUST" />
    <intercept-url pattern="/photos/**" access="ROLE_USER,SCOPE_READ" />
    <custom-filter ref="resourceServerFilter" before="PRE_AUTH_FILTER" />
    <access-denied-handler ref="oauthAccessDeniedHandler" />
</http>

Это pattern приписывать http тег действителен? Я не мог найти его определение в spring-security-2.0.1.xsd, Если это действительно так, какова связь этого паттерна с intercept-url"s pattern атрибут? Взять, к примеру, путь перехвата /photos/user/** имеет окончательный совпадающий путь перехвата /users/photos/user/**? Благодарю.

2 ответа

Решение

pattern атрибут был введен в 3.1, который представил поддержку пространства имен для нескольких цепочек фильтров. Spring Security 2 очень устарел (вы не должны его использовать).

Шаблоны в intercept-url элементы являются независимыми в том смысле, что они сопоставляются с URI входящего запроса так же, как цепочка фильтров http шаблон проверен. Однако, если последний не совпадает, цепочка фильтров вообще не будет применяться к запросу, поэтому, чтобы иметь какой-либо эффект, они должны соответствовать шаблону цепочки фильтров.

Для приведенного вами примера это будет означать, что ни один из /photos шаблоны имеют какой-либо эффект. Все они должны иметь префикс, которому соответствует основная цепочка фильтров, т.е. они должны начинаться с /users/photos,

В случае весенней безопасности 4, Role проверяется haseRole('ADMIN'), просто попробуйте.

Он отлично работает для меня.

Другие вопросы по тегам