<properties>
<spring.version>4.3.8.RELEASE</spring.version>
<spring-security.version>4.2.2.RELEASE</spring-security.version>
</properties>
<dependencies>
<dependency><groupId>org.springframework.security</groupId><artifactId>spring-security-web</artifactId><version>${spring-security.version}</version></dependency>
<dependency><groupId>org.springframework.security</groupId><artifactId>spring-security-config</artifactId><version>${spring-security.version}</version></dependency>
</dependencies>
<context:component-scan base-package="com.controller" />
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/pages/" />
<property name="suffix" value=".jsp" />
</bean>
<beans:beans xmlns="https://www.springframework.org/schema/security" ...>
<http auto-config="true">
<intercept-url pattern="/**" access="hasRole('ROLE_USER')" />
</http>
<authentication-manager>
<authentication-provider>
<user-service>
<user name="admin" password="123456" authorities="ROLE_USER" />
</user-service>
</authentication-provider>
</authentication-manager>
</beans:beans>
auto-config="true":啟用預設登入頁、登出、CSRF 等。intercept-url:所有請求需具備 ROLE_USER 權限。user-service:記憶體內建使用者,生產環境應換成 JDBC/LDAP/OAuth2。<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mvc-servlet.xml, classpath:spring-security.xml</param-value>
</context-param>
<servlet>
<servlet-name>spring-mvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring-mvc-servlet.xml</param-value></init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping><servlet-name>spring-mvc</servlet-name><url-pattern>/</url-pattern></servlet-mapping>
<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>
DelegatingFilterProxy 將請求委派給 Spring 容器管理的 springSecurityFilterChain Bean。
/index.jsp)。/login。admin/123456 → 登入成功 → 重導向回目標頁面。<form-login login-page="/myLogin" />。UserDetailsService 配合 JdbcDaoImpl。PasswordEncoder (BCrypt)。@PreAuthorize。