0

私のコードでは、@ Secured( "ROLE_ADMIN")と@RolesAllowed( "ROLE_ADMIN")の両方を使用して、サービスクラス(@Service)のメソッドに正常に注釈を付けることができることに気付きました。できます。ただし、同じアノテーションをコントローラークラス(@Controller)に移動すると、@ Securedのみがアクティブ化され、@RolesAllowedは無視されます。ルートapplicationContextを次のように構成しました

<security:global-method-security 
          jsr250-annotations="enabled" 
          secured-annotations="enabled"/>

@Securedが適用されているのに、@ RollesAllowedがコントローラークラスに適用されないのはなぜですか?

4

2 に答える 2

1

@RolesAllowedがサービスレベルで機能していた(コントローラーでは機能していない)理由は、私の側の設定ミスが原因でした。これを機能させるには、コントローラーがスキャンされるのと同じ構成ファイル(コンテキスト)でglobal-method-securityを宣言する必要がありました。例えば:

<context:component-scan base-package="mrpomario.springcore.mvc.controller"/>
<security:global-method-security 
          jsr250-annotations="enabled" 
          secured-annotations="enabled"/>
于 2012-10-05T16:27:22.203 に答える
0

異なる注釈を混合しても、一貫した動作が得られるとは限りません。

マニュアルから:

同じアプリケーションで複数のタイプの注釈を有効にすることができますが、動作が明確に定義されていないため、インターフェイスまたはクラスには1つのタイプのみを使用する必要があります。特定のメソッドに適用される2つのアノテーションが見つかった場合、そのうちの1つだけが適用されます。

于 2012-10-05T20:30:16.587 に答える