Spring с BlazeDS Global Method Security не работает - PullRequest
0 голосов
/ 16 августа 2011

Я использую BlazeDS и Spring Security и настроил свое приложение, используя цепочку фильтров Spring Security и сервлет-диспетчер, в моем файле web.xml, а в файле application-context.xml я настроил следующее ...

<s:http 
    auto-config="true" 
    access-decision-manager-ref="accessDecisionManager"/>

<s:authentication-manager>
    <s:authentication-provider
        user-service-ref="userService"/>
</s:authentication-manager>

<f:message-broker>
    <f:secured/>
</f:message-broker>

<s:global-method-security 
    access-decision-manager-ref="accessDecisionManager">
    <s:protect-pointcut 
        expression="execution(* com.my.app.Server.*(..))" 
        access="ROLE_USER"/>
</s:global-method-security>

Это обычно работает. Посредник сообщений Spring правильно разрешает мне доступ к моему классу java-сервера, а тег «secure» работает и позволяет мне войти в набор каналов с помощью моего специального менеджера аутентификации (через userService). Я могу вызывать удаленные методы на сервере класса без проблем.

Однако я не могу заставить работать глобальную безопасность методов. Я не могу заставить Spring вызвать мой accessDecisionManager или даже запретить доступ к методам класса Server независимо от того, какую роль доступа я использую. Кто-нибудь знает, как я могу заставить это работать?

Между прочим, мой класс Server не является компонентом Spring или чем-то в этом роде, это просто стандартный класс Java, который будет использоваться в стандартном удаленном взаимодействии Flex. Будет ли это иметь значение?

Я использую Spring Security 3 и Flex 4.5

1 Ответ

1 голос
/ 16 августа 2011

Точечные срезы и аспекты работают только для Spring-бинов, если это простой Java-объект, Spring не может перехватывать вызовы любого метода, так как он не проксируется.Пожалуйста, создайте bean-компонент для вашего класса сервера, и он должен работать нормально.

После того, как вы создали bean-компонент, вы можете выставить bean-компонент через Blaze DS, используя flex: remoting-destination

...