大家好,我是春季安全新手,我找到了有关身份验证全局(@Autowired配置(和本地身份验证(@Override配置(的文章
你能告诉我@Autowired配置((和@Override配置有什么区别吗?
//全球
@Configuration
@EnableWebSecurity
public class SpringSecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth
.inMemoryAuthentication()
.withUser("admin").password("admin@password").roles("ROLE_ADMIN");
}
}
//当地
@Configuration
@EnableWebSecurity
public class SpringSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth
.inMemoryAuthentication()
.withUser("admin").password("admin@password").roles("ROLE_ADMIN");
}
}
一种看待它的方式是全局AuthenticationManager
是"全局的",因为它可以作为 Bean 在应用程序之间共享,因此当您@Autowire
AuthenticationManager
时,您必须配置全局AuthenticationManager
。否则,您像上面那样在本地配置的AuthenticationManager
将仅存在于WebSecurityConfigurerAdapter
的上下文中。
在春季网站上查看本指南。
身份验证和访问控制指南(与NatFar提供的链接相同(描述了以下内容
有时应用程序具有受保护资源的逻辑组 (例如,与路径模式/api/** 匹配的所有 Web 资源(,以及每个 组可以有自己的专用身份验证管理器。通常,每个 他们是提供者经理,他们共享一个父级。父级是 然后是一种"全局"资源,充当所有人的后备 供应商。
该图像描绘了全局(父(和本地资源,这是不言自明
的还通过链接:
https://github.com/spring-projects/spring-security/issues/4571
https://github.com/spring-projects/spring-security/issues/4324