前言
公衆號 《java編程手記》記錄JAVA學習平常,分享學習路上點點滴滴,從入門到放棄,歡迎關注java
Spring Security 是一套基於Spring框架,旨在爲基於javaEE的企業應用程序提供一個全面的解決方案。Spring Security在web方面的應用主要依賴於Servlet的Filter機制,經過組裝一系列的FilterChain達到web會話請求的校驗認證受權等一系列操做web
入門Demo
引入POM依賴
本次使用SpringBoot+SpringSecurity進行Demo實現,SpringBoot
版本爲2.4.4
spring
<!--?xml version="1.0" encoding="UTF-8"?--> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemalocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelversion>4.0.0</modelversion> <parent> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-parent</artifactid> <version>2.4.4</version> <relativepath /> <!-- lookup parent from repository --> </parent> <groupid>com.uiaoo.study</groupid> <artifactid>study-security</artifactid> <version>0.0.1-SNAPSHOT</version> <name>study-security</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-security</artifactid> </dependency> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-web</artifactid> </dependency> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-test</artifactid> <scope>test</scope> </dependency> <dependency> <groupid>org.springframework.security</groupid> <artifactid>spring-security-aspects</artifactid> </dependency> <dependency> <groupid>org.springframework.security</groupid> <artifactid>spring-security-test</artifactid> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-maven-plugin</artifactid> </plugin> </plugins> </build> </project>
重寫WebSecurityConfigurerAdapter
WebSecurityConfigurerAdapter
是SpringSecurity在web場景的一個重要實現類,本文不作討論,待後續文章專門分析該類實現。apache
引入JAR之後須要重寫WebSecurityConfigurerAdapter
對象的configure
方法,方法簽名以下,入參爲HttpSecurity
,configure
方法主要使用ant風格對請求路徑的url進行規則權限配置,登陸相關信息配置,登陸相關信息配置,匿名登陸相關信息配置等等,是SpringSecurity實現自定義的重要擴展點,這裏作一個簡單地實現控制編程
@Override protected void configure(HttpSecurity http) throws Exception { http.formLogin().and().authorizeRequests().antMatchers("/index").authenticated().anyRequest().permitAll(); }
如上表示,使用form表單登陸
驗證,而且針對訪問/index
的路徑必須登陸,其餘路徑則放行經過,不作任何權限校驗app
啓動項目
實現index
路徑請求,返回index
字符串框架
@SpringBootApplication @RestController public class StudySecurityApplication { public static void main(String[] args) { SpringApplication.run(StudySecurityApplication.class, args); } @GetMapping("/index") public Object index(){ return "index"; } }
默認Spring Security
會爲默認用戶user
隨機生成一個用戶密碼`,並打印在控制檯中maven
隨便訪問一個連接,默認會提示頁面不存在404
,可是不會有任何權限登陸校驗攔截ide
訪問有權限校驗的index
頁面時會被重定向到則會跳轉到Spring Security的默認登陸頁面/login
spring-boot
經過帳戶 user
以及控制檯生成的密碼a0aa9c06-28dd-408f-8801-2571a08409aa
進行登陸,登陸成功會跳轉到原有的index
頁面
至此已經初步完成了Spring Security的簡單demo,咱們加入了SpringBoot
和SpringSecurityStarter
的依賴,重寫了WebSecurityConfigurerAdapter
的configure
實現,而且進行了一些簡單場景的校驗,下一篇主要重點實現基於DB的權限控制