1. SpringSecurity 快速入門與簡單使用

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 配置文件自己設置的)。按下回車鍵,會彈出如下對話框:

      1552465921774

      該對話框需要我們輸入用戶名與密碼進行登錄,從這裏可以分析出,我們上面定義的接口已經被保護起來了,訪問必要要先認證,而認證的方式是通過填寫這個對話框。

      這裏用戶名默認爲 user,密碼則爲上面我們叫大家留意的哪一行日誌 (ce87e8ab-8233-447b-82d8-90268d891615),這裏說明一下,這個密碼是隨機的,每次啓動服務,都會生成一個隨機的密碼。

    • 按照說明,我們鍵入用戶名和密碼,點擊登錄按鈕,就可以訪問到我們上面自定義的接口了。

      1552466161653

  • 總結:按照上述步驟,我們就在一個基於 SpringBoot 的項目中引入了 SpringSecurity 框架,但是顯而易見的,我們發現這種默認的實現是不能夠滿足我們的日常開發需求的,我們將可能會用的需求列一下

    • 用戶登錄不可能以這種彈框形式去登錄,一般網頁都有自己的登錄頁面(自定義登錄頁面)
    • 用戶名、密碼應該是從數據庫中讀取,而不是默認和隨機的(自定義認證邏輯)
    • 並不是對所有的資源或接口都需要認證(設置資源白名單)

    所以在下一篇文章中,我們會實現一個自定義的表單登錄示例,To Be Continue…

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章