spring security3.x学习(14)_关系型数据库使用的UserDetailsService(JdbcDaoImpl)

还记得这张图吧,这是当初我们在使用默认的配置时,看到的,大概回忆一下,在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对象。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值