Spring Security 是一個功能強大且可高度自定義的身份驗證和訪問控制框架。 它是保護基於Spring的應用程序的事實上的標準。
Spring Security 是一個專一於爲Java應用程序提供身份驗證和受權的框架。 與全部Spring項目同樣,Spring Security的真正強大之處在於它能夠輕鬆擴展以知足自定義要求web
先創建一個maven多模塊工程,以下:spring
spring-security:父模塊apache
spring-security-browser:處理瀏覽器相關的受權認證,最終做爲demo的一個jar依賴瀏覽器
spring-security-core:一些受權認證的公共方法和類,並將公共依賴放在這裏app
spring-security-demo:受權認證demo服務框架
spring-security-coremaven
pom依賴:ide
<!-- 工具類包 --> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.7</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-collections4</artifactId> <version>4.1</version> </dependency> <dependency> <groupId>commons-beanutils</groupId> <artifactId>commons-beanutils</artifactId> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.6</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <!-- thymeleaf-視圖解析 --> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency>
spring-security-browserspring-boot
pom依賴:工具
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>com.xwj</groupId> <artifactId>spring-security-core</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency>
Security配置:
@Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.formLogin() // 表單登陸。跳轉到security默認的登陸表單頁 // http.httpBasic() //basic登陸 .and() .authorizeRequests() // 對請求受權
.antMatchers("/noAuth").permitAll() //容許全部人訪問/noAuth .anyRequest() // 任何請求 .authenticated()// 須要身份認證 ; } }
spring-security-demo
pom依賴:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>com.xwj</groupId> <artifactId>spring-security-browser</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency>
Controller中:
@RestController @RequestMapping public class IndexController { /** * 不須要認證的請求 */ @GetMapping("/noAuth") public String noAuth() { return "noAuth"; } /** * 須要認證的請求 */ @GetMapping("/user") public String user() { return "user"; } }
啓動服務。在日誌中,能夠看到以下信息:
Using default security password: 90d9e73a-490c-484b-b7c5-5cd75c634e2f
這是security的默認密碼,在後面登陸時會用到
該服務端口爲18081,在瀏覽器訪問 http://localhost:18081/noAuth,該請求是不須要認證的,因此直接進入到咱們的服務,以下:
再訪問 http://localhost:18081/user,該請求是須要認證的,會先跳到security默認的登陸頁(也能夠自定義登陸頁),以下:
用戶名隨便輸入,密碼爲日誌中打印的密碼:90d9e73a-490c-484b-b7c5-5cd75c634e2f
點擊login按鈕,登陸成功,返回一個user。當從新訪問這個請求時,因爲已經認證過了,因此如今能夠直接訪問了
至此,最簡單的security配置完成~