1

HTTP リクエストからの呼び出しに対してのみ認証/認可を実行したい。

認証/承認を有効にしたいコントローラのメソッドが、複数のソースから呼び出されています。この場合、別のコントローラーまたは直接の HTTP 要求によって呼び出すことができます。

他のコントローラーからの呼び出しの認証/承認をオフにすることはできますか?

これをまだ十分に理解していない場合は、さらに読んでください。

コントローラー A にメソッド doIt() があるとします。コントローラー B もあり、コントローラー A を挿入します。コントローラー B のある時点で、「a.doIt()」を呼び出しますが、呼び出すこともできます。 doIt.do への HTTP 呼び出しからの doIt()。呼び出しが HTTP 呼び出しからのものである場合、認証/承認の呼び出しをテストしたいのですが、コントローラー B からのものである場合はテストしません。

4

3 に答える 3

1

A のセキュリティ プロキシ Bean を B に注入しています。プロキシなしで A を注入できませんか?
プロキシされる Bean A:

<bean id="beanASecured" class="org.springframework.aop.framework.ProxyFactoryBean">
  <property name="targetName" value="beanA"/>
  <property name="interceptorNames">
    <value>securityInterceptor</value>
  </property>
</bean>

セキュリティーインターセプター:

<bean id="securityInterceptor" class="org.acegisecurity.intercept.method.aopalliance.MethodSecurityInterceptor">
   ...
</bean>

プロキシされていない Bean A:

<bean id="beanA" class="com.A"/>

Bean 'A not proxied' が注入された Bean B:

<bean id="beanB" class="com.B">
   <constructor-arg ref="beanA"/>
</bean>
于 2009-07-18T19:55:58.330 に答える
0

これを行う方法はわかりません。実際の他のコントローラーが呼び出すdoitDirectCall(..)やHTTPリクエストで呼び出されるdoit(..)のような2番目のメソッドが必要になると思います。

于 2009-07-16T16:25:43.963 に答える
0

メソッド呼び出しではなく、URL でのみ春の認証を構成する必要があります。これはあなたのために働くでしょう。

于 2009-07-16T05:13:32.713 に答える