系列文章目录
文章目录
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提供的标签库可以做到显示欢迎信息,,后面说