Web應用安全管理 Web應用的安全管理,主要包括兩個方面的內容,一個是用戶身份的認證,即用戶登錄的設計,二是用戶授權,即一個用戶在一個應用系統中能夠執行哪些操作的許可權管理。許可權管理的設計一般使用角色來管理,即給一個用戶賦予哪些角色,這個用戶就具有哪些許可權。 Spring框架體系中,經典的安全體系框 ...
Web應用安全管理
Web應用的安全管理,主要包括兩個方面的內容,一個是用戶身份的認證,即用戶登錄的設計,二是用戶授權,即一個用戶在一個應用系統中能夠執行哪些操作的許可權管理。許可權管理的設計一般使用角色來管理,即給一個用戶賦予哪些角色,這個用戶就具有哪些許可權。
Spring框架體系中,經典的安全體系框架是Security。關於系統的安全管理及各種設計,Spring Security已經大體上都實現了,只需要一些配置和引用就能夠正常使用。SpringBoot使用Security更加的簡單,因為SpringBoot本身的簡單配置使用加上Security的功能豐富全面,可用快速幫助我們構建完善的登陸認證服務。
關於Security,SpringBoot本身有spring-boot-starter-security依賴組件,Spring Cloud微服務全家桶中也有spring-cloud-starter-security依賴組件,並且spring-cloud-starter-security中也包含了spring-boot-starter-security,下麵的學習中,會先使spring-boot-starter-security,然後再spring-cloud-starter-security學習安全管理的功能,從SpringBoot單體的登陸註冊和許可權管理,到Spring Cloud微服務中構建認證和授權服務,都會一一接觸到。
關於版本的問題,我從SpringBoot1.3.x版的使用到2.1.x的使用,Security的配置也經歷了不小的變化,最準確的配置建議去官網文檔學習。
下麵的學習中,將使用2.1.5版本,官方文檔地址是: https://docs.spring.io/spring-boot/docs/2.1.5.RELEASE/reference/htmlsingle/ 。 Security的源碼非常複雜,因此我們後面再討論深層次的東西,現在來用實例進行入門學習。
入門例子
先來看一個入門例子,springboot項目結構我們都很熟悉,先來看依賴:
依賴很簡單,除了一個web組件和thymeleaf視圖組件,就是一個security。接下來看一下啟動類:
可以看到啟動類沒有任何特殊的配置。至於配置文件,我們簡單的配置一下埠,其它不做任何配置:
這樣一個簡單的入門例子就完成了,現在來啟動項目,啟動日誌很短,可以看到有一行特殊的日誌:
這是我們加入了security組件的依賴之後,引入了security的預設配置,此時就有了一個簡單的登錄功能,列印出的一行是預設密碼的信息,這個密碼是現在沒有任何代碼和配置的狀態下每次啟動隨機生成的,security不僅會生成一個預設密碼,依賴組件中還有一個預設的登陸鏈接/login,還有一個預設的用戶名 user,而且在springboot2.1.x版本中,這個/login有一個非常不錯的預設登錄頁面,下麵進行測試:
用戶名輸入user,密碼輸入日誌中列印出的隨機密碼,登錄成功後,就會跳轉到預設地址,預設成功的地址就是登錄地址去掉/login,
現在沒有定義任何鏈接匹配這個地址,我們來定義一個簡單的頁面,在resource下麵,新建一個templates文件夾,在templates下麵新建一個主頁 home.html,內容如下:
然後定義一個controller跳轉到這個頁面:
這樣我們登陸成功後,就能自動跳轉到這個頁面:
這樣,一個最簡單的登錄流程就完成了,我們幾乎沒有做任何配置,只是引入了一個依賴而已。下麵我們給security配置一個預設用戶名密碼,這樣就不用每次啟動都用隨機密碼,直接在springboot的預設配置文件中配置:
這樣等登陸就可以使用 admin/admin登陸了。
代碼地址 :https://gitee.com/blueses/spring-boot-security 01