项目一众筹网08_03_SpringSecurity数据库登录-思路子类和父类之间的构造器的关系

Posted 平凡加班狗

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了项目一众筹网08_03_SpringSecurity数据库登录-思路子类和父类之间的构造器的关系相关的知识,希望对你有一定的参考价值。

系列文章目录

文章目录

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

以上是关于项目一众筹网08_03_SpringSecurity数据库登录-思路子类和父类之间的构造器的关系的主要内容,如果未能解决你的问题,请参考以下文章

项目一众筹网01_00此项目是SSM过渡到分布式项目(SpringBootSpringCloud)

项目一众筹网08_03_SpringSecurity数据库登录-思路子类和父类之间的构造器的关系

项目一众筹网08_03_SpringSecurity数据库登录-思路子类和父类之间的构造器的关系

项目一众筹网03_4_管理员维护_更新_增删查改全部完结_隐藏域的使用

项目一众筹网03_5_RBAC(权限管理)模型-概述

项目一众筹网07_03_SpringSecurity退出登录禁用CSRF基于角色或权限访问控制自定义403页面