我还没有找到一个简单的一次性配置选项来保护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(); –
你不能这样做,因为过滤器不知道过滤器即将被调用 –