Spring Security何时使用WebSecurityConfigurerAdapter和UserDetailsS​​ervice

时间:2015-10-25 15:55:37

标签: spring spring-security

有人可以解释我何时使用WebSecurityConfigurerAdapter和UserDetailsS​​ervice。我刚开始学习spring security,注意到扩展这两个接口你可以创建安全实现。但是,如果我想从基于角度的站点和保存在数据库中的用户数据创建Web项目连接的安全性,我应该使用哪一个。

1 个答案:

答案 0 :(得分:2)

您正在谈论的组件具有非常不同的职责,因此问题我是否使用其中一个?并没有多大意义。看看这些组件的JavaDocs,了解其中的差异。

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;
    }

    // ...
}

reference guide

中也很好地描述了Spring Security的核心组件及其职责