1
    <security:intercept-url pattern="/person/**" 
        access="isAuthenticated()" />   


    <security:intercept-url pattern="/person?reg"
        access="isAnonymous()" />

/ person / blablaなどのすべてのリクエストをフィルターでインターセプトしたいのですが、匿名ユーザーが自分自身を登録できる単一のリクエストが必要です。

最初のルールを導入するときはいつでも、必要なものではない下部のリクエストを含め、すべてのサブリクエストが保護されます。

最初に紹介しない場合は、一番下のリクエストが許可されますが、/ person/myProfileなどの後続のすべてのリクエストにも匿名ユーザーがアクセスできます。

4

1 に答える 1

3

Spring Securityのドキュメントから:

複数の要素を使用して、URLのセットごとに異なるアクセス要件を定義できますが、それらはリストされた順序で評価され、最初の一致が使用されます。したがって、最も具体的な一致を一番上に配置する必要があります。

また、Springはデフォルトでantスタイルのパターンマッチングを使用します。これには、マッチングを試みる際のパラメーターが含まれていません。パラメータが存在するかどうかについても一致させたいと考えています。これを行うには、の属性を介して正規表現の一致を設定する必要があります。request-matcherhttp

<http request-matcher="regex">
  <security:intercept-url pattern="\A/person\?reg.*\Z" access="isAnonymous()" />

  <security:intercept-url pattern="\A/person/.*\Z" access="isAuthenticated()" />
</http>
于 2012-04-29T16:04:26.863 に答える