春季安全性中全局身份验证和本地身份验证之间的区别

时间:2019-08-19 20:48:24

标签: spring spring-security autowired

您好,各位,我是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");
}
}

2 个答案:

答案 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