【问题标题】:difference between global authentication and local authentication in spring securityspring security中全局认证和本地认证的区别
【发布时间】:2019-08-19 20:48:24
【问题描述】:

大家好,我是 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");
}
}

【问题讨论】:

    标签: spring spring-security autowired


    【解决方案1】:

    看待它的一种方式是全局AuthenticationManager 是“全局的”,因为它可以作为bean 在整个应用程序中共享,所以当您@AutowireAuthenticationManager 时,您必须配置全局 AuthenticationManager。如果没有,您在本地配置的AuthenticationManager 将仅存在于您的WebSecurityConfigurerAdapter 的上下文中。

    看看Spring网站上的this guide

    【讨论】:

      【解决方案2】:

      身份验证和访问控制指南(与 NatFar 提供的链接相同)描述了以下内容

      有时应用程序具有受保护资源的逻辑组 (例如,与路径模式 /api/** 匹配的所有 Web 资源),以及每个 组可以有自己的专用 AuthenticationManager。通常,每个 那些是 ProviderManager,它们共享一个父级。父母是 然后是一种“全球”资源,作为所有人的后备 供应商。

      image 描述了全局(父)和本地资源,这是不言自明的

      也通过链接:

      https://github.com/spring-projects/spring-security/issues/4571

      https://github.com/spring-projects/spring-security/issues/4324

      【讨论】:

        猜你喜欢
        • 2019-05-11
        • 2012-10-15
        • 2012-08-15
        • 2016-08-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-26
        • 2016-11-15
        相关资源
        最近更新 更多