您好,各位,我是Spring Security的新手,我发现了有关全局身份验证(@Autowired配置)和本地身份验证(@Override配置)的文章
您能告诉我@Autowired configure()和@Override configure之间有什么区别。
//全局
@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");
}
}
答案 0 :(得分:0)
一种查看方式是,全局AuthenticationManager
是“全局”的,因为它可以作为bean在整个应用程序中进行共享,因此当您@Autowire
AuthenticationManager
,您必须配置全局AuthenticationManager
。如果没有,则像上面一样在本地配置的AuthenticationManager
仅存在于WebSecurityConfigurerAdapter
的上下文中。
在Spring网站上查看this guide。
答案 1 :(得分:0)
身份验证和访问控制指南(NatFar提供了相同的链接)描述了以下内容
有时应用程序具有逻辑组的受保护资源 (例如,与路径模式/ api / **匹配的所有网络资源), 组可以具有自己的专用AuthenticationManager。通常,每个 这些是ProviderManager,它们共享一个父级。父母是 然后是一种“全球”资源,作为所有人的后备 提供者。
image描述了全球(父)资源和本地资源,这是不言而喻的
也通过链接:
https://github.com/spring-projects/spring-security/issues/4571
https://github.com/spring-projects/spring-security/issues/4324