二、Spring Security的使用

weixin_34342992發表於2018-03-23

一、課程介紹

1.1 Spring Security介紹:認證、許可權攔截、資料庫、許可權快取以及自定義決策

1.2 環境搭建和使用

二、spring Security的架構


11176703-35d83d83da896298.png

三、Spring Security的許可權攔截

3.1 Spring Security攔截器的處理過程


11176703-16aa4f7c4f4a67a5.png
spring security提供了很多的過濾器,攔截servlet請求,將這些請求轉交給認證管理器和訪問決策管理器,並強制安全性

3.2 spring security的常見filter

3.2.1 率先執行的過濾器,判斷使用者的session是否已經存在securityContext的上下文中,如果存在則把securityContext拿出來,放在SecurityContextHolder中,供其它部分使用。

11176703-f6c9703abf7ccb3a.png
過濾器的頂端,第一個起作用的過濾器

3.2.2 LogoutFilter

3.2.3 AbstractAuthenticationProcessingFilter:處理form登陸的過濾器

3.2.4 DefaultLoginPageGeneratingFilter :生成預設的登陸頁面

3.2.5 BasicAuthenticationFilter:

3.2.6 其它

11176703-8fc44d3ff16a3d5d.png
Spring Security的常見過濾器

四、Spring Security的資料庫管理

11176703-8e97281ffc2ded05.png


11176703-210c2b371c3b4e53.png
當使用資料庫管理使用者時,我們需要手動實現UserDetailService中的loadUserByUsername()方法
11176703-f2d462ba51e79b4d.png
loadUserByUsername()返回的UserDetail物件,其中包含了當前使用者的許可權集合
11176703-20075069fdce90d5.png

五、Spring Security的許可權快取

11176703-87e8742c451575c7.png
UserDetailService快取

六、Spring Security的自定義決策

11176703-265ddffaae830af2.png

七、Case:Spring Boot+Spring Security

7.1 搭建spring boot環境

7.2 引入spring-security的依賴包,此時訪問controller,就需要輸入使用者名稱密碼來訪問

11176703-f3b6f36cd25da09c.png
測試Controller如下
11176703-5c257518294a74bd.png
此時訪問url就需要輸入使用者名稱密碼


7.3 對訪問策略進行配置

11176703-d6e2c5dca39b83a6.png
對http請求的策略配置
11176703-b493205130b96257.png
對靜態資源的策略配置

八、Spring Security的常見Case

8.1 只要能登陸即可:網頁是記錄專案裡的工具等,安全性要求不高。只要組內同事能登陸即可

11176703-6f6db7eba89fcae5.png
ADMIN使用者只要登陸即可訪問,zhouzhou是基於角色的,然後在Controller中新增如下的註解
11176703-074278e02b561553.png

九、資料庫管理使用者

11176703-c6f9539f4681f3b8.png
定義實現UserDetaisService的類,其中返回一個UserDetails物件,UserDetails物件有如下的實現類
11176703-33b2b75047149a44.png
UserDetail的實現,其中需要如下的欄位。密碼需要自定義校驗規則
11176703-a8c9be7524f10027.png
自定義密碼的校驗規則
11176703-23b2bc2d9dffbafd.png
設定校驗時定義的UserDetailService類,同時設定密碼校驗的類

十、總結

10.1 優點

11176703-1106090ccc028543.png
優點

10.2 缺點

相關文章