3

更新:Spring 2.xアノテーションベースのコントローラーは、パラメーターと戻り値の自由度が増したためにメソッドプロトタイプについて推測できないため、AOPセキュリティにとって恐ろしいことがわかりました。2.xより前では、 handleRequestをインターセプトして、最初のパラメーターがHttpServletRequestであり、戻り値がModelAndViewであることがわかりました。この標準により、すべてのコントローラーに対して簡単なアドバイスを書くことができました。これで、リクエストにマップされたメソッドは何でも受け取り、Strings、ModelAndViewsなどを返すことができます。

元の投稿:Springで実行されているAOPAllianceのMethodInterceptorを実装する一連の既存の側面があります。それらは、インターセプトすることで私のWebアプリケーションにセキュリティを提供します。handleRequest。コントローラのメソッドであり、実行またはログインページへの転送を許可します。

Springの新しいアノテーションベースのコントローラーでは、「handleRequest」メソッドを実装する必要がなくなりました。コントローラのメソッドには、好きな名前を付けることができます。これは私の既存のセキュリティモデルを壊します。だから、私はこれからどのように得るのですか?

    <bean class="com.xxx.aspects.security.LoginAdvice" name="loginAdvice">
            <property name="loginPath">
                    <value>/login.htm</value>
            </property>
            <property name="authenticationService" ref="authenticationService" />
    </bean>

    <bean name="loginAdvisor" class="org.springframework.aop.support.DefaultPointcutAdvisor">
            <property name="advice" ref="loginAdvice" />
            <property name="pointcut">
                    <bean class="org.springframework.aop.support.JdkRegexpMethodPointcut">
                            <property name="pattern">
                                    <value>.*handleRequest.*</value>
                            </property>
                    </bean>
            </property>
    </bean>

    <bean id="someProtectedController" class="org.springframework.aop.framework.ProxyFactoryBean">
            <property name="target">
                    <ref local="someProtectedControllerTarget" />
            </property>
            <property name="interceptorNames">
                    <list>
                            <value>loginAdvisor</value>
                            <value>adminAdvisor</value>
                    </list>
            </property>
    </bean> 

...既存のアスペクトを再利用して、アノテーションを使用してコントローラー全体またはコントローラーメソッドに適用できるようにするには?

4

1 に答える 1

3

AnnotationMatchingPointcutを使用して、@ RequestMapping(またはアノテーションベースのSpringコントローラーで使用する他の同様のアノテーション)を持つコントローラー上のメソッドを探すことができますか?

于 2009-05-05T11:27:53.467 に答える