Как я уже сказал в заголовке моего вопроса, мне не удается настроить Spring Security ... Я следил за двумя статьями, написанными Джеймсом Уордом или Джеттро Коэнради, но у меня все еще нет этого!
Сначала я попытался заставить все это работать в поддельном проекте, и это сработало хорошо, хотя я пытался в «реальном» проекте.Конфигурационные файлы точно такие же в отношении Spring Security, но реальный проект терпит неудачу.
Моя конфигурация в web.xml:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/config/applicationContext.xml</param-value>
</context-param>
...
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
...
<servlet>
<servlet-name>Spring MVC Servlet Dispatcher</servlet-name>
<display-name>Spring MVC Servlet Dispatcher</display-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/config/webApplicationContext.xml</param- value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
В applicationContext.xml:
<security:global-method-security secured-annotations="enabled" jsr250-annotations="enabled" />
<security:http entry-point-ref="preAuthenticatedEntryPoint">
<security:anonymous enabled="false"/>
</security:http>
<bean id="preAuthenticatedEntryPoint" class="org.springframework.security.web.authentication.Http403ForbiddenEntryPoint"/>
<security:authentication-manager>
<security:authentication-provider>
<security:user-service>
<security:user name="arnaud" password="arnaud" authorities="ROLE_USER"/>
</security:user-service>
</security:authentication-provider>
</security:authentication-manager>
В webApplicationContext.xml ceci:
<flex:message-broker>
<flex:secured />
</flex:message-broker>
И в каждой службе bean-компонента:
<security:intercept-methods>
<security:protect method="*" access="ROLE_USER" />
</security:intercept-methods>
Сначала я попытался заменить этот последний фрагмент кода аннотациями @Secured ("ROLE_USER"), который не работал, поэтому я использовал security: intercept-method и security: protect tags.
В моем первом фальшивом проекте, когда я запускаю свое flex-приложение (простая сетка данных, получающая списокпродуктов), продукты не загружены, и у меня отправлено FaultEvent, поэтому Spring Security работает.
Во втором проекте, настоящем, у меня есть ошибка при развертывании, сообщающая мне, что "*" (или«findAll», когда я пытался) не является допустимым именем метода.
С
<security:protect method="com.blablabla.UserService.findAll" access="ROLE_USER" />
У меня больше нет этой ошибки, и я могу запустить свое гибкое приложение.
Но когда я запускаю его, все мои пользователи (уВ этом втором приложении я получаю пользователей, а не продукты), загруженных в сетку данных!А это значит, что охрана вообще не работает.
Это сводит меня с ума!