博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
springsecurity3.x学习(14)_关系型数据库使用UserDetailsService
阅读量:5818 次
发布时间:2019-06-18

本文共 900 字,大约阅读时间需要 3 分钟。

hot3.png

本文为转载学习

原文链接:

224222_E9dd_1417419.jpg

还记得这张图吧,这是当初我们在使用默认的配置时,看到的,大概回忆一下,在AuthenticationManager将Authentication传递给AuthenticationProvider处理时,AuthenticationProvider将进行真正的认证处理,此时调用了UserDetailsService然后返回UserDetails对象。当初调用的是InMemoryDaoImpl这个,而现在我们使用的是关系型数据库,那么我们就要用一个JdbcDaoImpl去替代InMemoryDaoImpl这个实现类。 

那如何使用JdbcDaoImpl,以及如何进行实现呢?来看一下我们类(UserDetailsService)的关系:

224407_OVrN_1417419.jpg

我们现在已经确定了JdbcDaoImpl这个类来实现UserDetailsService。再来看一下这个类源码里边究竟写了哪些内容。

非常有意思的一个事,这个类继承了JdbcDaoSupport这个一个类(就是说明它可以进行数据库操作了),并且里边定义了很多的Sql语句,我大概截取了几个,并且我们再右侧又可以看到许多查询数据库的操作方法。看到这我们是不是有个疑问,那这些数据库表结构,他是如何知道的呢?我也很纳闷,所以我查了下Spring Security的官方文档:

224943_0mnB_1417419.jpg

其实也就是说,spring security是根据这些数据库脚本进行对数据库操作的,我们可以根据文档找到这些资源。这也难怪为什么JdbcDaoImpl可以直接集JdbcDaoSupport然后直接操作数据库了。

那好,现在基本我就知道了,其实内存数据库也是关系型数据库,那么是有实际的数据的,并且也是使用jdbc来进行操作的。这样看起来就非常有意思了。看到这不要乱,一定要记住JdbcDaoImpl只是一种UserDetailsService的实现类,是AuthenticationProvider去调用它进行完成认证操作的,他会返回一个UserDetail对象

转载于:https://my.oschina.net/heroShane/blog/197017

你可能感兴趣的文章
[nodejs] nodejs开发个人博客(五)分配数据
查看>>
《Linux内核修炼之道》 之 高效学习Linux内核
查看>>
Java数据持久层框架 MyBatis之API学习九(SQL语句构建器详解)
查看>>
30分钟Git命令“从入门到放弃”
查看>>
nginx : TCP代理和负载均衡的stream模块
查看>>
MYSQL数据库间同步数据
查看>>
DevOps 前世今生 | mPaaS 线上直播 CodeHub #1 回顾
查看>>
iOS 解决UITabelView刷新闪动
查看>>
让前端小姐姐愉快地开发表单
查看>>
Dubbo笔记(四)
查看>>
Web前端JQuery入门实战案例
查看>>
java B2B2C Springboot电子商城系统- SSO单点登录之OAuth2.0 登出流程(3)
查看>>
USB 通信原理
查看>>
7zZip zip RAR iOS
查看>>
date命令的详细用法!
查看>>
UiAutomator源码分析之UiAutomatorBridge框架
查看>>
python 开发之selenium
查看>>
Xcode3.2.5中找不到Mac OS X - Command Line Utility -...
查看>>
css的div垂直居中的方法,百分比div垂直居中
查看>>
如何理解EM算法
查看>>