首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Spring Security 入門:最小化配置實現登入攔截

     編輯:Java 相關知識

環境與依賴

<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>

Spring MVC 配置

<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>

Spring Security 配置

<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。

web.xml 整合

<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。

驗證流程

  1. 訪問任意受保護資源(如 /index.jsp)。
  2. 未登入 → 重導向至 Spring Security 預設登入頁 /login。
  3. 輸入 admin/123456 → 登入成功 → 重導向回目標頁面。

進階擴展方向

  • 自定義登入頁:<form-login login-page="/myLogin" />。
  • 資料庫認證:實作 UserDetailsService 配合 JdbcDaoImpl。
  • 密碼加密:PasswordEncoder (BCrypt)。
  • CSRF 關閉/Token 傳遞、Remember-Me、方法級權限 @PreAuthorize。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved