Spring Security進行身份驗證或者權限控制時,使用者名和密碼應該要和資料庫的進行比較才行,使用者的各種資訊我們從資料庫中去擷取,不用自己在代碼或者配置檔案中寫。
案例
自己建立一個Maven項目
在項目的resources檔案的目錄下建立一個配置檔案:application.properties
來建立一個實體層類、dao層接口、service層、控制層
實體類
dao層接口
service層
controller層
這些準備工作都做完之後,我們可以往資料庫中插入一些資料,建立一個類,用來往資料庫中添加資料的。
現在就可以啟動項目看看資料庫中是否插入成功資料了。
接下來做權限的驗證==========
來寫一個類,實作UserDetailService并實作它的方法
再寫一個配置類,解析密碼的加密方式
現在可以進行測試了,啟動項目,通路控制層的方法,隻有方法上标記的角色才能通路該方法
authentication:認證,認證通路的使用者是不是有效的使用者,他是誰。
authorization:授權,通路的使用者在系統中能幹什麼
RBAC:基于角色的通路控制(Role-Based Access Control),使用者屬于某個角色,而角色擁有某些權限。
權限:能對資源進行操作,比如增删改查
角色:自定義的,表示權限的聚合,一個角色可以有多個權限。
舉例說明:
設計角色:經理具有資料的修改、删除、檢視等;員工隻能檢視資料。 一個公司中如果想把一個使用者設定為經理,隻需把他設定為經理這個角色,他就能有修改、删除、檢視等操作了,如果公司新來普通員工,隻需把他加入到員工這個角色裡面就好了。這樣,想讓什麼使用者使用者什麼權限,隻需把他加入到相應的角色裡就OK了。
UserDetailService:這是一個接口,裡面隻有一個方法UserDetails loadUserByUsername(String var1),是根據使用者名來擷取資料庫中資訊的
主要的實作有:
InMemoryUserDetailsManager在記憶體中維護使用者資訊的,使用很友善,可是資料不是持久的
JdbcUserDetailsManager對資料庫資訊進行操作的,底層是基于jdbcTemplate的,可以使用這個類的方法來操作資料庫資料。
UserDetails:提供使用者資訊的核心接口
UserDetails有一個實作類User
基于RBAC設定三張表,使用者表,角色表,使用者和角色的關聯表 密碼明文分别是 123 456 admin
把上一個項目的依賴導入進來,再加多一個spring整合mybatis的包
建立User和Role的實體類,要繼承UserDetails
service層要實作UserDetailService接口,去擷取資料庫中的資訊做傳回
個人筆記