Spring Security вызывается из разных источников - PullRequest
1 голос
/ 16 июля 2009

Я хочу запустить аутентификацию / авторизацию только для вызовов, поступающих из HTTP-запросов.

Метод на контроллере, для которого я хочу включить аутентификацию / авторизацию, вызывается из более чем одного источника. В этом случае он может быть вызван другим контроллером или прямым HTTP-запросом.

Можно ли отключить аутентификацию / авторизацию для вызовов, поступающих с других контроллеров?

Просто прочитайте дальше, если вы еще не поняли этого достаточно.

Допустим, у меня есть метод doIt () на контроллере A. У меня также есть контроллер B, в который я вводю контроллер A. В какой-то момент на контроллере B я вызываю a.doIt (), но я Также можно вызвать doIt () из HTTP-вызова doIt.do. Я хочу проверить вызов на аутентификацию / авторизацию, если вызов поступил от HTTP-вызова, но не, если он поступил от контроллера B.

Ответы [ 3 ]

1 голос
/ 18 июля 2009

Вы вводите в B защищенный компонент-прокси A. Не можете ли вы ввести 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>

Бин A не проксирован:

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

Бин B, введенный с бобом 'A notxyxy':

<bean id="beanB" class="com.B">
   <constructor-arg ref="beanA"/>
</bean>
0 голосов
/ 16 июля 2009

Я не вижу никакого способа сделать это, я думаю, вам просто нужно будет иметь второй метод, такой как doitDirectCall (..) , который фактически вызывает другой контроллер, и doit (..) , что get вызывается по HTTP-запросу.

0 голосов
/ 16 июля 2009

Вам нужно настроить аутентификацию Spring только для URL, а не для вызова метода. Это будет работать для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...