Java 默认情况下使用安全批注和安全

Java 默认情况下使用安全批注和安全,java,spring-security,spring-boot,Java,Spring Security,Spring Boot,我在Spring boot应用程序中使用Spring security。默认情况下,由于此配置,所有方法仅限于经过身份验证的用户: @Override public void configure(HttpSecurity http) throws Exception { http .authorizeRequests() .anyRequest().authenticated() 现在,我想将一些URL标记为公共URL。我可以用ant matchers来做,但我

我在Spring boot应用程序中使用Spring security。默认情况下,由于此配置,所有方法仅限于经过身份验证的用户:

@Override
public void configure(HttpSecurity http) throws Exception {
  http
      .authorizeRequests()
        .anyRequest().authenticated()
现在,我想将一些URL标记为公共URL。我可以用ant matchers来做,但我更希望能够直接用注释标记相关的方法

我看到存在一些
@PreAuthorize
注释,但只有从配置中删除这些行,我才能让它工作:

      .authorizeRequests()
        .anyRequest().authenticated()
这迫使我手动注释我希望使用此注释保护的每个方法:

@PreAuthorize("isAuthenticated()")
这是非常危险的,因为默认情况下,每个被遗忘的url都可以公开访问。是否有一种方法可以使经过身份验证的用户在默认情况下访问每个url,并使用

@PreAuthorize("permitAll()")
此外,我还看到OP得到了回答:

但在控制器上使用pre-post注释确实不是一个好主意,因为可以直接在HttpSecurity配置中完成。它迫使您使用
proxyTargetClass=true


这有什么不对?(另外,我不需要在每个类上使用
proxyTargetClass=true

添加
@PreAuthorize(“isAuthenticated()”)
,如果是,则在方法级别重写required@AliDehghani似乎很合理,因为我可以在每个控制器的模板中包含此内容,谢谢。添加
@PreAuthorize(“isAuthenticated()”)
在每个类上,如果是,则在方法级别上重写required@AliDehghani似乎很合理,因为我可以将其包含在每个控制器的模板中,谢谢。