1. 程式人生 > >SpringBootSecurity學習(07)網頁版登入整合JDBC

SpringBootSecurity學習(07)網頁版登入整合JDBC

資料庫中定義使用者

前面我們定義使用者是在配置檔案和程式碼中定義死的預設使用者,一般在開發中是不會這樣做的,我們的使用者都是來自我們的使用者表,儲存在資料庫中。操作資料庫的技術有很多,spring security預設支援了一個JDBC的方式,下面用這個方式來從資料庫中查詢使用者。首先定義使用者表users:

file

enabled欄位表示是否啟用,改為0表示不允許此使用者登入。在表裡面新增兩個使用者 :

file

注意密碼前面都加了{noop}是JDBC這種查詢方式預設的加密演算法。實際上,這種方式還需要定義好幾個表,此處我們演示定義一個users使用者表就足夠了。

新增依賴

因為加入了資料庫,所以我們要新增兩個依賴:

file

資料來源按照springboot的方式配置即可:

file

配置jdbc

刪除原來在配置類中定義的記憶體使用者,在配置類中增加一個Bean:

file

這樣使用jdbc從資料庫中查詢使用者就完全配置好了,啟動可以使用 admin/admin和user/123456兩個使用者登入。

說明

這種jdbc的方式配置是很簡單的,但是有很多定義死的內容,比如表明和表中的三個欄位,不過這些也是可以進行修改的。

上面的配置類中,使用了JdbcUserDetailsManager類,我們來進入這個類,看一下內容:

file

可以看到裡面有很多預設的sql語句,這也解釋了為什麼使用者表要叫user,為什麼是上面定義的三個欄位,增刪改查使用者都執行了哪些語句。而且預設的語句中不僅有users使用者表,還有 groups表,authorities許可權表,等等一些其它的表,從這些結構中就能看出把整個許可權系統的架構規劃了出來。我們要修改預設的語句可以呼叫對應的set方法:

file

但是儘管所有的都可以配置,對於實際業務來說還是太死板了,尤其對於稍微大型的專案,對許可權系統的個性化設計佔很大成分,因此這種jdbc的方式適應性不是很大。後面會介紹更加實用的mybatis方式。

程式碼地址:https://gitee.com/blueses/spring-