[英]Best practice to use @PreAuthorize
我有一個帶有安全方法的服務類( @PreAuthorize
,Spring Security)。
編碼是不好的做法?
也許我應該只在我的控制器類( @Controller
或@RestController
)中使用這個注釋@PreAuthorize
是的,理想情況下,這種類型的授權檢查應該在Controller或第一個請求處理程序步驟(如您提到的RestController)中完成。 將@PreAuthorize
注釋放在Controller方法上更有意義,因為請求不會轉發到Service層,如果找不到正確的角色,將不會執行不必要的代碼(控制器方法中的代碼)。
但
如果您有多個控制器正在使用服務類的應用程序,那么您可以在服務層上使用@PreAuthorize
注釋。 如果明天有人創建新控制器(並忘記使用正確的授權檢查)並使用現有服務類,那么您的應用程序將使用服務層授權正確處理授權。
通常我在服務層上使用@ PreAuthorize / @ PostAuthorize,並使用<sec:intercept-url
或javaconfig
來檢查Controllers / javaconfig
的角色。
如果您必須檢查數據/對象內部的某些內容(例如,如果用戶有權更改來自某個特定公司的數據),您應該檢查服務層。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.