Spring Security何时使用WebSecurityConfigurerAdapter和UserDetailsS



谁能告诉我什么时候使用WebSecurityConfigurerAdapter,什么时候使用UserDetailsService ?我刚开始学习spring安全,注意到扩展两个接口都可以创建安全实现。但是,如果我想为基于angular的网站和保存在数据库中的用户数据的web项目连接创建安全性,我应该使用哪一个?

您所谈论的组件具有非常不同的职责,因此问题我使用其中一个还是另一个?没有真正的意义。看一下这些组件的javadoc,了解它们之间的区别。

UserDetailsService

加载用户特定数据的核心接口。它作为用户DAO在整个框架中使用,并且是一种策略由DaoAuthenticationProvider使用。接口只需要一个只读方法,简化了操作支持新的数据访问策略。

WebSecurityConfigurerAdapter

为创建WebSecurityConfigurer实例提供了一个方便的基类。实现允许通过重写方法进行定制。


例如,您可以使用扩展WebSecurityConfigurerAdapter的安全配置类,并使用自定义UserDetailsService来加载用户信息,如下所示:

@Configuration
@EnableWebMvcSecurity
@EnableGlobalMethodSecurity(securedEnabled = true)
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    @Autowired
    private UserService userService;
    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.authenticationProvider(authenticationProvider());
    }
    @Bean
    public AuthenticationProvider authenticationProvider() {
        DaoAuthenticationProvider authenticationProvider = new DaoAuthenticationProvider();
        authenticationProvider.setPasswordEncoder(new ShaPasswordEncoder());
        authenticationProvider.setUserDetailsService(userService);
        return authenticationProvider;
    }
    // ...
}

Spring Security的核心组件及其职责在参考指南中也有很好的描述。

相关内容

最新更新