4

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-urlpattern属性との関係は? たとえば、インターセプト パス/photos/user/**の最終一致インターセプト パスは/users/photos/user/**ですか? ありがとう。

4

2 に答える 2

8

このpattern属性は3.1で導入され、複数のフィルター チェーンの名前空間サポートが導入されました。Spring Security 2 は非常に時代遅れです (使用しないでください)。

要素内のパターンは独立しており、フィルター チェーンパターンがチェックintercept-urlされるのと同じ方法で着信要求 URIと照合されます。httpただし、後者が一致しない場合、フィルタ チェーンはリクエストにまったく適用されないため、効果を得るには、フィルタ チェーン パターンと一致している必要があります。

あなたが投稿した例では、これは/photosどのパターンも効果がないことを意味します。それらはすべて、メインのフィルター チェーンが一致するプレフィックスを持つ必要があります。つまり、それらは で始まる必要があり/users/photosます。

于 2014-10-03T16:57:30.103 に答える
1

spring security 4 の場合, Role は haseRole('ADMIN') でチェックします. 試してみてください.

それは私にとってはうまくいきます。

于 2016-03-21T04:41:49.123 に答える