spring security java config - 多个身份验证管理器

时间:2016-04-18 04:30:49

标签: java spring-mvc spring-security

我正在开发一个java spring mvc应用程序。以下是我设置SecurityConfig的{​​{1}}课程的一部分:

AuthenticationManager

... @Autowired private SecurityDAO securityDAO; ... @Override protected void configure(AuthenticationManagerBuilder registry) throws Exception { registry.userDetailsService(securityDAO).passwordEncoder(new BCryptPasswordEncoder()); } 是一个实现SecurityDAO接口的类。

现在,我需要有两个不同的UserDetailsService界面实现。一个用于UserDetailsService个用户,网址为admin,另一个用于/admin/login使用网址customer

我发现一些使用spring实现多个身份验证管理器的示例,但所有这些示例都使用 XML配置,而我找不到 java config 的示例。

Here is a sample of xml config.实际上,我想将此配置转换为java配置。

1 个答案:

答案 0 :(得分:0)

扩展AbstractAutowiringFactoryBean并在该类中添加您的实现。

它有两个方法,doCreateInstance()来知道哪个对象需要实例化,getObjectType()知道哪个接口实现是这个。

例如

@Configuration
public class CLass extends AbstractAutowiringFactoryBean<Object> {

    public enum Env {
        devloper, production
    }

    Env envType = Env.devloper;

    @Override
    protected Object doCreateInstance() {
        switch (envType) {
            case devloper:

                return new ClassImpl1();
            case production:
                rreturn new ClassImpl2();

        }
        throw new RuntimeException("Unsupported implementation type");
    }

    @Override
    public Class<?> getObjectType() {
        return SecurityDAO.class;
    }

}
相关问题