天天看點

Spring Security進階

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接口,去擷取資料庫中的資訊做傳回

個人筆記