Meh*_*lik 26 java annotations spring-security spring-boot
按照春季文档
将此批注添加到
@Configuration类中以WebSecurityConfigurer通过扩展WebSecurityConfigurerAdapter基类并覆盖单个方法来定义任何或更多可能的Spring Security配置:
或者如图所示@EnableWebSecurity,用于在我们的项目中启用SpringSecurity.
但我的问题是,即使我没有注释我的任何类,@EnableWebSecurity仍有应用程序提示输入用户名和密码.(默认行为)
所以@EnableWebSecurity无论有没有,我都会收到同样的行为@EnableWebSecurity.
有人可以解释这个注释究竟是什么?
And*_*lko 24
这@EnableWebSecurity是标记注释.它允许Spring查找(它是a @Configuration,因此@Component)并自动将类应用于全局WebSecurity.
如果我
@EnableWebSecurity仍然没有注释我的任何类,仍然是应用程序提示输入用户名和密码.
是的,这是默认行为.如果查看类路径,可以找到标有该注释的其他类(取决于您的依赖项):
SpringBootWebSecurityConfiguration;FallbackWebSecurityAutoConfiguration;WebMvcSecurityConfiguration.仔细考虑它们,关闭所需的配置,或覆盖其行为.
San*_*Lee 14
在春季启动参考指南很好地解释了这件事.如果可以搜索@EnableWebSecurity:
要完全关闭默认Web应用程序安全配置,您可以添加一个bean
@EnableWebSecurity(这不会禁用身份验证管理器配置或Actuator的安全性).要自定义它,通常使用外部属性和类型的beanWebSecurityConfigurerAdapter(例如,添加基于表单的登录)....
如果添加
@EnableWebSecurity并禁用Actuator安全性,除非添加自定义,否则将获得整个应用程序的默认基于表单的登录WebSecurityConfigurerAdapter....
如果在应用程序中的任何位置定义a
@Configuration,@EnableWebSecurity它将关闭Spring Boot中的默认Webapp安全设置(但启用Actuator的安全性).要调整默认值,请尝试设置属性security.*(SecurityProperties有关可用设置的详细信息)和常用应用程序属性的"安全"部分.
显然,它是打开默认的Web应用程序安全配置并添加您自己的.
Ken*_*ger 14
答案取决于您是否使用 Spring Boot。
如果您在没有 Spring Boot 的情况下使用 Spring 和 Spring Security,则 @EnableWebSecurity 会按照您在原始问题中描述的方式执行操作:它将自动定义和配置多个 bean、过滤器链等,以启用 Web 应用程序的基本安全性。
如果您使用 Spring Boot,自动配置类(请参阅https://github.com/spring-projects/spring-boot/tree/main/spring-boot-project/spring-boot-autoconfigure/src/main/java/org /springframework/boot/autoconfigure/security)将为您自动配置安全bean。不需要@EnableWebSecurity。事实上,对于 Boot,通常不需要任何 Spring 的 @Enable* 注解。
...除非您不喜欢 Spring Boot 的自动配置类设置安全性的方式。@EnableWebSecurity 会导致 Spring Security 的设置优先并导致 Spring Boot 自动配置停止。(当您将现有的 Spring Security 应用程序转换为 Spring Boot 并希望最大程度地减少更改时,有时需要这样做。)
Spring Boot 的自动配置默认行为和 @EnableWebSecurity 默认行为非常接近。这就是为什么您在删除注释后没有观察到任何差异的原因。
| 归档时间: |
|
| 查看次数: |
24445 次 |
| 最近记录: |