我還沒有找到一個簡單的一次性配置選項來保護REST URL中的用戶部分,而無需每次使用Spring的@PreAuthorize批註或通過代碼進行查找。爲了讓事情自然地休息,讓我們說有這個網址:Spring安全基於REST的用戶身份驗證沒有Boilerplate代碼
colleagues/private/user1/todolist
我知道在春天,你可以配置如下:然而
http.authorizeRequests().antMatchers("/colleagues/private/**「)
.authenticated().anyRequest().permitAll();
,一旦通過身份驗證的用戶可以訪問的同事/私人,沒有什麼可以阻止用戶1中:
colleagues/private/user1
訪問在user2的私人領域:
colleagues/private/user2
和今後訪問說:
colleagues/private/user2/todolist
等
有誰知道一個更好的方法沒有詳細考慮的Spring Security的最新版本的配置選項的優勢呢?例如,有沒有一種方法可以配置類似下面的配置,只需配置一個用戶(或URL的任何子元素)的基於REST的url安全性,只能由他/他或通過配置的任何條件訪問:
http.authorizeRequests().antMatchers("/colleagues/private/{user}/**」)
.access({user}==principal.username]/**「).anyRequest().permitAll();
感謝
將'@ PreAuthorize'添加到需要此檢查的方法中,而不是手動執行。 –
感謝您的回覆,但這正是我想要避免的,也就是說,在每個地方都有@PreAuthorize註釋,而是在一個地方有類似的東西:http.authorizeRequests()。antMatchers(「/ colleagues/private/{user}/**「).access({user} == principal.username]/**」)。anyRequest()。permitAll(); –
你不能這樣做,因爲過濾器不知道過濾器即將被調用 –