Spring 官網對 SpringSecurity 的簡介
Spring Security is a powerful and highly customizable authentication and access-control framework. It is the de-facto standard for securing Spring-based applications.
翻譯過來的大概意思就是 SpringSecurity 是一個強大並且支持高自定義性的認證和授權框架
SpringSecurity 是什麼?
- SpringSecurity 是一個 Spring 團隊開發基於 Spring 的 認證 和 授權 框架
- 特點是 功能強大 且 支持高自定義性
爲什麼要使用 SpringSecurity?
- 爲了解決系統中 認證 與 授權 的需求
- 對比自己手動實現的認證、授權框架,SpringSecurity 有以下優點
- 比較成熟
- 對於基於 Spring 開發的項目,集成快速
- 無縫對接 Spring 平臺
- 可擴展性高
- 功能強大
快速入門
-
環境準備
- IDEA
- jdk 1.8
- maven 3.5 或 IDEA 自帶 Maven 3
-
步驟
-
使用 IDEA 創建一個 SpringBoot 項目,在新建項目選擇 Dependeces 勾選 Security,或者創建項目後再 pom 文件中手動添加如下依賴。PS: 本次 SpringSecurity 文章中 SpringBoot 版本爲 1.5.19.RELEASE,SpringSecurity 版本爲 4.2.11.RELEASE。
<!-- 添加 SpringSecurity 依賴,當前的 SpringBoot 版本使用的 1.5.19,對應的 SpringSecurity 版本爲 4.2.11 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency>
-
創建一個 Restful 接口,用來做之後訪問的目標。
/** * @author: hblolj * @Date: 2019/3/13 16:06 * @Description: * @Version: **/ @RestController public class TestController { @RequestMapping("/hello") public String hello(){ return "Hello Spring Security"; } }
-
啓動應用,成功啓動後,觀察控制檯,會發現如下日誌輸出
注意日誌中下面這一行,後面會用到
Using default security password: ce87e8ab-8233-447b-82d8-90268d891615
-
打開我們的瀏覽器,在地址欄輸入接口地址,訪問我們的接口 http://localhost:8080/security/hello (8080 端口與 security 路徑是我通過 yml 配置文件自己設置的)。按下回車鍵,會彈出如下對話框:
該對話框需要我們輸入用戶名與密碼進行登錄,從這裏可以分析出,我們上面定義的接口已經被保護起來了,訪問必要要先認證,而認證的方式是通過填寫這個對話框。
這裏用戶名默認爲 user,密碼則爲上面我們叫大家留意的哪一行日誌 (ce87e8ab-8233-447b-82d8-90268d891615),這裏說明一下,這個密碼是隨機的,每次啓動服務,都會生成一個隨機的密碼。
-
按照說明,我們鍵入用戶名和密碼,點擊登錄按鈕,就可以訪問到我們上面自定義的接口了。
-
-
總結:按照上述步驟,我們就在一個基於 SpringBoot 的項目中引入了 SpringSecurity 框架,但是顯而易見的,我們發現這種默認的實現是不能夠滿足我們的日常開發需求的,我們將可能會用的需求列一下
- 用戶登錄不可能以這種彈框形式去登錄,一般網頁都有自己的登錄頁面(自定義登錄頁面)
- 用戶名、密碼應該是從數據庫中讀取,而不是默認和隨機的(自定義認證邏輯)
- 並不是對所有的資源或接口都需要認證(設置資源白名單)
- …
所以在下一篇文章中,我們會實現一個自定義的表單登錄示例,To Be Continue…