首先你要明白springsecurity的原理是什么
springSecurity在我們進行用戶認證以及授予權限的時候,通過各種各樣的攔截器來控制權限的訪問,從而實現安全。
對Web資源的保護,就是靠Filter實現的。
一般來說,我們的Filter都是配置在web.xml中,但是springSecurity不一樣,它在web.xml中配置的只是一個代理,而真正起作用的Filter是作為Bean配置在Spring中的。web.xml中的代理依次調用這些Bean,就實現了對Web資源的保護,同時這些Filter作為Bean被Spring管理,所以實現AOP也很簡單,真的是一舉兩得啊。
springSecurity中提供的Filter不少,有十多個,一個一個學起來比較復雜。但是對于我們Web開發者來說,常用的就那么幾個,
從上到下,它們實現的功能依次是1、制定必須為https連接;2、從Session中提取用戶的認證信息;3、退出登錄;4、登錄;5、記住用戶;6、所有的應用必須配置這個Filter。
一般來說,我們寫Web應用只需要熟悉這幾個Filter就可以了,如果不需要https連接,連第一個也不用熟悉。
springsecurity是對權限的控制。
應用的安全性包括用戶認證(Authentication)和用戶授權(Authorization)兩個部分。
①用戶認證指的是驗證某個用戶是否為系統中的合法主體,也就是說用戶能否訪問該系統。用戶認證一般要求用戶提供用戶名和密碼。系統通過校驗用戶名和密碼來完成認證過程。
②用戶授權指的是驗證某個用戶是否有權限執行某個操作。在一個系統中,不同用戶所具有的權限是不同的。比如對一個文件來說,有的用戶只能進行讀取,而有的用戶可以進行修改。一般來說,系統會為不同的用戶分配不同的角色,而每個角色則對應一系列的權限。
springsecurity的主要核心功能為認證和授權,所有的架構也是基于這兩個核心功能去實現的。
=================================
在每個微服務中,需要獲取用戶的角色,然后根據角色識別是否允許操作指定的方法,SpringSecurity中定義了四個支持權限控制的表達式注解,分別是@PreAuthorize、@PostAuthorize、@PreFilter和@PostFilter。其中前兩者可以用來在方法調用前或者調用后進行權限檢查,后兩者可以用來對集合類型的參數或者返回值進行過濾。在需要控制權限的方法上,我們可以添加@PreAuthorize注解,用于方法執行前進行權限檢查,校驗用戶當前角色是否能訪問該方法。