Я использую 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