spring security3.x学习(14)_关系型数据库使用的UserDetailsService(JdbcDaoImpl)
2014-12-20 18:09
197 查看
还记得这张图吧,这是当初我们在使用默认的配置时,看到的,大概回忆一下,在AuthenticationManager将Authentication传递给AuthenticationProvider处理时,AuthenticationProvider将进行真正的认证处理,此时调用了UserDetailsService然后返回UserDetails对象,。当初调用的是InMemoryDaoImpl这个,而现在我们使用的是关系型数据库,那么我们就要用一个JdbcDaoImpl去替代InMemoryDaoImpl这个实现类。
那如何使用JdbcDaoImpl,以及如何进行实现呢?、来看一下我们类(UserDetailsService)的关系:
我们现在已经确定了JdbcDaoImpl这个类来实现UserDetailsService。再来看一下这个类源码里边究竟写了哪些内容。
非常有意思的一个事,这个类继承了JdbcDaoSupport这个一个类(就是说明它可以进行数据库操作了),并且里边定义了很多的Sql语句,我大概截取了几个,并且我们再右侧又可以看到许多查询数据库的操作方法,,,。看到这我们是不是有个疑问,那这些数据库表结构,他是如何知道的呢?、、 我也很纳闷,所以我查了下Spring Security的官方文档:
其实也就是说,spring security是根据这些数据库脚本进行对数据库操作的,我们可以根据文档找到这些资源。这也难怪为什么JdbcDaoImpl可以直接集JdbcDaoSupport然后直接操作数据库了。
那好,现在基本我就知道了,其实内存数据库也是关系型数据库,那么是有实际的数据的,并且也是使用jdbc来进行操作的。这样看起来就非常有意思了,。。。看到这不要乱,一定要记住JdbcDaoImpl只是一种UserDetailsService的实现类,是AuthenticationProvider去调用它进行完成认证操作的,他会返回一个UserDetail对象。
相关文章推荐
- spring security3.x学习(14)_关系型数据库使用的UserDetailsService(JdbcDaoImpl)
- SpringSecurity4使用UserDetailsService时无法注入数据库持久层的service、dao
- jdbc连接数据库使用sid和service_name的区别
- 使用Spring对JDBC的Dao的支持类操作数据库
- springBoot(14):使用SQL关系型数据库-事务处理
- SPRING IN ACTION 第4版笔记-第九章Securing web applications-008-使用非关系型数据库时如何验证用户(自定义UserService)
- jdbc连接数据库使用sid和service_name的区别
- jdbc连接数据库使用sid和service_name的区别
- jdbc连接数据库使用sid和service_name的区别
- jdbc连接数据库使用sid和service_name的区别 oracle
- 简单MVC三层代码生成器:使用Java从数据库反向生成实体类和action、service、dao代码
- jdbc连接数据库使用sid和service_name的区别
- Hibernate4 使用Proxool连接数据库出现 at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcSer
- jdbc连接数据库使用sid和service_name的区别 ?
- 基于数据库自定义UserDetailsService实现Spring security认证
- 第一个 Spring Boot 程序 : 使用 spring jdbc 访问关系型数据库
- 07_数据库创建,添加c3p0操作所需的jar包,编写c3p0-config.xml文件,编写User.java,编写jdbcUtils.java实现操作数据库的模板工具类,UserDao编写,Dao
- JDBC连接数据库使用SERVICE NAME、SID以及TNSName不同写法
- jdbc连接数据库使用sid和service_name的区别
- jdbc连接数据库使用sid和service_name的区别