Spring Security:WebSecurityConfigurerAdapter 和 GlobalAuthenticationConfigurerAdapter的区别

6
这两个类:
WebSecurityConfigurerAdapter 
GlobalAuthenticationConfigurerAdapter 

对我来说,似乎两者都提供了不同的方法 configure(...) 来自定义WebSecurity,例如配置 UserDetailsService。在互联网上找到的一些示例中,我看到这两个类都被扩展了(例如此示例:http://ryanjbaxter.com/2015/01/06/securing-rest-apis-with-spring-boot/):

@Configuration
class WebSecurityConfiguration extends GlobalAuthenticationConfigurerAdapter {...}

并且

@EnableWebSecurity
@Configuration
class WebSecurityConfig extends WebSecurityConfigurerAdapter {...}

但在某些情况下,只需要扩展WebSecurityConfigurerAdapter

我不确定两者之间的区别是什么?它们各自能做什么?或者如果两者都需要,那么它们分别用于Spring安全的哪个方面?

我唯一看到的区别是@EnableWebSecurity通常注释在扩展WebSecurityConfigurerAdapter的类上,而不是在扩展GlobalAuthenticationConfigurerAdapter的类上。

=============实验==================

我尝试删除扩展GlobalAuthenticationConfigurerAdapter的类,并将与UserDetailsService相关的代码移到扩展WebSecurityConfigurerAdapter的类中(请参阅上面的链接以查看实际代码),它仍然可以正常工作。

1个回答

0

基本上,WebSecurityConfigurerAdapter 用于创建 FilterChainProxy,请参考此 docs。而 GlobalAuthenticationConfigurerAdapter 则用作 SecurityConfigurer,可用于轻松构建内存身份验证、LDAP 身份验证、基于 JDBC 的身份验证、添加 UserDetailsService 和添加 AuthenticationProvider's,请参考此 docs。希望这可以帮到您!


WebSecurityConfigurerAdapter 可用于配置内存认证、LDAP、JDBC等。这两个类都有一个名为 configure(AuthenticationManagerBuilder auth) 的方法,用于执行此操作。 - Simo
在我的以前的项目中,我使用了 GlobalAuthenticationConfigurerAdapter 来配置全局配置,然后我使用了 WebSecurityConfigurerAdapter 来覆盖那些具有不同配置的特定路由的配置。 - Madhatter
你能给一些全局配置和一些特定于路由的配置的例子吗?谢谢。 - Simo
@Simo 你弄清楚区别了吗? - Hafiz Hamza

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接