这实际上非常简单 - Spring Security 与 Web 框架无关 :)
您需要定义 Spring Security 过滤器链 - 这是一个应该映射到所有请求的 Java 过滤器。过滤器将检查路径是否需要任何特权,如果需要,则检查用户是否已登录并拥有这些特权。
简单的设置示例。
web.xml(插入到您现有的,与 struts 配置一起):
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:META-INF/spring/applicationContext-security.xml
</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<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>
Spring 安全配置(在 web.xml 中 contextConfigLocation 参数中提到的文件中):
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/security"
xmlns:beans="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-3.1.xsd">
<http pattern="/js/**" security="none" />
<http pattern="/css/**" security="none" />
<http pattern="/images/**" security="none" />
<http auto-config="false" use-expressions="true">
<http-basic/>
<intercept-url pattern="/**" access="hasRole('ROLE_USER')" />
<session-management session-fixation-protection="newSession" />
</http>
</beans:beans>
您可以随意扩展它 - Spring's documentation is rather well written
您可以进行更简单的自动配置:
<http auto-config='true'>
<intercept-url pattern="/**" access="ROLE_USER" />
</http>
以上选项可根据请求路径保护您的网络应用。您可能还想保护这些操作。添加以下内容将使您继续前进:
<global-method-security secured-annotations="enabled" pre-post-annotations="enabled" proxy-target-class = "true" />
让我知道您需要哪些功能,我可以为您指明方向。请记住,命名空间配置不是灵丹妙药 - 如果您需要一个非常自定义的解决方案,您可能需要自己配置所有 Spring bean,但文档对此进行了很好的解释。