系列文章目录
文章目录
- 系列文章目录
- 24-目标4-数据库登录-思路
- 25-目标4-数据库登录-查询角色和权限信息
- 26-目标4-数据库登录-创建SecurityAdmin
- 子类和父类之间的构造器的关系,解决报错问题
- 27-目标4-数据库登录-根据账号查询Admin
- 28-目标4-数据库登录-完成UserDetailsService类
- 29-目标4-数据库登录-使用UserDetailsService
- 附录
24-目标4-数据库登录-思路



邮箱那些怎么办

邮箱那些怎么办,所以要优化

可能有点不好理解,我们下面把它拆解,一步一步来做
25-目标4-数据库登录-查询角色和权限信息
根据admin用户id去查角色,怎么写
自己动手在数据里面写一下
特别注意是三张表的关联查询,而不是我们以为的两张表,自己动手写一下就明白了


其实我们以前做过,可以根据管理员用户的id 查询到已分配的角色

我们可以直接从这里面去遍历取到角色

第二步就是 根据角色,怎么去查到权限


加上这样一个方法,然后去实现

结合注释我们看一下,即:

关键还是怎么去写sql


然后就是写sql 了

注意最开始我们前面那个sql是 根据用户 id 查询出已分配的 角色
这里的是第二步了
要根据用户 id 查询出所有的权限
三个表都有关系
可以用左右连接,也可以用子查询的方式
这里我们用左右连接


特别要注意,这里只是查权限,就像下面这样

假如有空值怎么处理,因为不处理的话SpringSecurity会报错

首先,我们找到为什么会出现这样的数据
其次想办法解决

解决办法:再加个条件,这样就不会有空值了

再严谨一点优化一下sql

放到代码里面去
26-目标4-数据库登录-创建SecurityAdmin
新建一个类,要去继承 User 注意这个User是SpringSecurity框架自带的一个权限相关的类,必须要去继承它


回忆 一下 子类 和 父类 之间 的 构造器的关系
子类和父类之间的构造器的关系,解决报错问题
解决一下,怎么才不报错
解决办法




加上注释,完整代码如下

27-目标4-数据库登录-根据账号查询Admin


注意要实现这个 UserDetailsService ,这个UserDetailsService 也是SpringSecurity的内部框架
实现它就必须要实现它的方法

实现它就必须要实现它的方法 —— loadUserByUsername 如下

注意这里需要用到的快捷键是Ctrl+1 和 Ctrl+shift+O (导 包)

然后实现这个方法,他的实现类如下


28-目标4-数据库登录-完成UserDetailsService类
先把一些必要的方法创建好,到时候直接调用
根据管理员用户的id 查询出他所拥有的所有(已经分配好的角色的)权限



CrowUserDetailsService:

29-目标4-数据库登录-使用UserDetailsService
用上这个类

然后就可以测试看看了
先看看用下面这个值能不能够登录

因为现在还没有 加入加密
直接是可以登录的,反而秘文倒是不认识了,这个要注意

附录
借助SpringSecurity提供的标签库可以做到显示欢迎信息,,后面说











