正如我在我的問題的標題中說的,我沒有成功配置Spring Security ... 我已經關注了兩篇由James Ward或Jettro撰寫的文章Coenradie,但我仍然沒有它![ACEGI]錯誤或沒有安全
首先,我試着讓所有這些工作在一個假項目中,並且運行良好,因爲我嘗試了「真正的」項目。 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>
首先,我嘗試用annotations @Secured(「ROLE_USER」)代替最後一段代碼,這沒有起作用,這就是爲什麼我使用了security:intercept-methods和security:protect tags。
在我的第一個虛擬項目中,當我啓動我的Flex應用程序(一個簡單的數據網格檢索產品列表)時,產品未加載並且我分派了一個FaultEvent,因此Spring Security可以工作。
在第二個項目中,真實的我在部署時發生錯誤,告訴我「*」(或者我試過的時候「findAll」)不是有效的方法名稱。
隨着
<security:protect method="com.blablabla.UserService.findAll" access="ROLE_USER" />
我不再有這個錯誤,我可以啓動我的Flex應用程序。
但是,當我啓動它時,我的所有用戶(是的,在第二個應用程序中檢索用戶,而不是產品)都加載到數據網格中!這意味着安全性根本不起作用。
這讓我瘋狂!
您使用的是什麼版本的spring/spring-security? – ALOToverflow 2010-11-09 20:31:53