您的位置:首页 > 编程语言 > Java开发

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对象。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐