@PreAuthorize(“isAuthenticated()”)与http.anyRequest()。authenticated()

时间:2018-06-07 08:04:38

标签: java spring spring-security configuration authorization

这两种不同的安全方法有什么不同? 第一个依赖于从Spring Security配置HttpSecurity对象。 第二个依赖于在每个方法或类上放置@PreAuthorize("isAuthenticated()")

第一种情况:

@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .authorizeRequests()
                .anyRequest()
                .authenticated();
    }
}

第二种情况:

每个方法/类的

@PreAuthorize("isAuthenticated()")

第一种方法看起来更好,因为您一次保护所有端点,使用@PreAuthorize需要更多工作。但这两者之间的实际差异是什么?

1 个答案:

答案 0 :(得分:1)

可以在WebSecurityConfigurerAdapter上授权所有请求,并在每个服务上使用PreAuthorize执行安全性。

使用WebSecurityConfigurerAdapter的优点是概述您的安全访问权限。 但@PreAuthorize允许您进行更细粒度的安全处理。例如,您可以告诉用户只有在撰写本文时才有权编辑文章。

我认为在一个大型应用程序中,可以同时使用它们。