Атрибуты шаблона 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'), просто попробуйте.
Он отлично работает для меня.