Spring Security# Multiple DaoAuthenticationProvider
来源:互联网 发布:msqrd软件安卓版 编辑:程序博客网 时间:2024/04/30 01:10
正文
有三种情况我们需要配置多个AuthenticationProvider,甚至是自定义AuthenticationProvider:
1. 用户认证信息存储在多个地方
2. 在同一个地方但是需要多种授权方式,比如说手机号+密码可以登录,邮箱+密码也可以登录
3. 以上两种情况都有
配置AuthenticationProvider,可以通过AuthenticationManagerBuilder,或者注册一个AuthenticationManager的bean,Spring Security Configurer这块相当灵活,充分了解设计架构之后,还有很多其他的方式。
@Configuration@EnableWebSecurity@EnableGlobalMethodSecurity(prePostEnabled = true)public class SecurityConfiguration extends WebSecurityConfigurerAdapter { @Autowired @Qualifier("primaryDataSource") private DataSource dataSource1; @Autowired @Qualifier("secondaryDataSource") private DataSource dataSource2; @Override public void configure(WebSecurity web) throws Exception { web.ignoring().antMatchers("/favicon.ico"); } /** * 只有这种方法可以配置多个DaoAuthenticationProvider,不然AuthenticationManagerConfiguration就会起作用,详细原因看AuthenticationManagerConfiguration类上的文档。 * */ @Bean @Override protected AuthenticationManager authenticationManager() throws Exception { JdbcUserDetailsManager jdbcUserDetailsManager1 = new JdbcUserDetailsManager(); jdbcUserDetailsManager1.setDataSource(dataSource1); DaoAuthenticationProvider authenticationProvider1 = new DaoAuthenticationProvider(); authenticationProvider1.setUserDetailsService(jdbcUserDetailsManager1); JdbcUserDetailsManager jdbcUserDetailsManager2 = new JdbcUserDetailsManager(); jdbcUserDetailsManager2.setDataSource(dataSource2); DaoAuthenticationProvider authenticationProvider2 = new DaoAuthenticationProvider(); authenticationProvider2.setUserDetailsService(jdbcUserDetailsManager2); ProviderManager authenticationManager = new ProviderManager( Arrays.asList(authenticationProvider1, authenticationProvider2)); return authenticationManager; } @Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { } @Override protected void configure(HttpSecurity http) throws Exception { http.formLogin().and().httpBasic().disable().anonymous().disable().authorizeRequests().anyRequest() .authenticated(); }}
注意
经测试在AuthenticationManagerBuilder 进行如下的设置是不行的:
@Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { auth.jdbcAuthentication().dataSource(dataSource1).and().jdbcAuthentication().dataSource(dataSource2); }
原因参考AuthenticationManagerConfiguration这个类的文档。
阅读全文
0 0
- Spring Security# Multiple DaoAuthenticationProvider
- OSSIM 2.1 - Multiple security vulnerabilities
- Spring Security
- Spring Security
- spring security
- spring security
- spring security
- spring security
- spring security
- spring security
- spring security
- spring security
- spring security
- Spring Security
- spring security
- spring-security
- Spring Security
- Spring Security
- springsecurity4.2入门完整实例
- js判断json对象是否为空
- Java 好看的label-textfield(-button)布局
- django static_root static_url media_root mdia_url详解
- 功分器,双工器,耦合器,合路器,环形器
- Spring Security# Multiple DaoAuthenticationProvider
- java之枚举的使用方法
- 《Windows核心编程》读书笔记四 进程
- Lua 数据类型
- 挂载硬盘,提示 mount: unknown filesystem type 'LVM2_member'的解决方案
- CentOS7虚拟机设置静态IP外网访问
- HTCvive官方开发插件介绍
- Java操作Elasticsearch
- 文pdf转CAD能不能快速转换