天天看點

Spring Security 簡介

SpringSecurity 是什麼?

SpringSecurity的子產品

開始SpringSecurity

SpringSecurity maven的最小依賴

<dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-web</artifactId>
            <version>4.2.0.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-config</artifactId>
            <version>4.2.0.RELEASE</version>
        </dependency>   
           

過濾Web請求

SpringSecurity借助一系列ServletFilter來提供各種安全性功能。

DelegatingFilterProxy是一個特殊的ServletFilter,它本身所做的工作并不多,隻是将工作委托給一個javax.servlet.Filter類,這個實作類作為一個Bean注冊到Spring應用的上下文中。

Spring Security 簡介

web.xml中配置DelegatingFilterProxy:

<filter>
    <filter-name>springSecurityFilterChain</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
  </filter>
           

Java 的方式配置DelegatingFilterProxy:

public class SecurityWebInitializer extends AbstractSecurityWebApplicationInitializer{

}
           

AbstractSecurityWebApplicationInitializer實作了WebApplicationInitializer,是以Spring會發現它,并用它在Web容器中注冊DelegatingFilterProxy。

不管通過web.xml還是通過AbstractSecurityWebApplicationInitializer的子類來配置DelegatingFilterProxy,它都會攔截發往應用中的請求,并将請求委托給ID為springSecurityFilterChain 的Bean.

編寫簡單的安全性配置

啟用web安全性功能的最簡單配置:

@Configuration
@EnableWebSecurity // 啟用web安全
public class SecurityConfig extends WebSecurityConfigurerAdapter{

}
           

@EnableWebSecurity注解将會啟用Web安全功能,Spring Security必須配置在一個實作了WebSecurityConfigurer的Bean中,或者簡單起見擴充WebSecurityConfigurerAdapter。

指定Web安全的細節,通過重載WebSecurityConfigurerAdapter中的configure()方法,這個過程中會使用傳遞進來的參數設定行為。

Spring Security 簡介