``## shiro
加入业务
1.身份认证
2.权限控制
Shiro框架认证拦截实现(filter)
2个版本去理解
一个配置类
疑问
如下图 访问url:http://localhost:8090/doIndexUI
自动跳转到url:http://localhost:8090/doLoginUI
客户端层没有加任何代码
就加了一个shiro自动配置 就拦截了首页的跳转 先到login页面了
雷哥实现
如下图 必须先认证 确认权限 才能进入资源管理界面(shiro自动配置的功劳)
雷哥错误
访问时没有跳转到登陆页面问题
已修正
必须得登陆
不被拦截的页面设置
自我实现
其余访问任何页面 都被拦截了
总结 shiro自动配置会帮我们把未认证未授权的拦截 然后跳转到登陆认证界面
如果需要无权限无拦截访问 必须加在map规则中
实现
shiro参考手册
继续 认证流程
分析Shiro框架认证业务实现 认证流程分析
身份认证即判定用户是否是系统的合法用户,用户访问系统资源时的认证(对用户身份信息的认证)流程图-5所示:
认证服务端实现 核心业务分析
继承授权的room
明天 10点41 找回新建的那个页面 ShiroUserRealm(下面补上了over)
只需要授权不需要认证的话 就不需要继承了
如上图 逻辑思路
想直接取到用户名和密码 有办法吗
打开AuthenticationToken源码
分析
然后
用usernameToken绝对没错
晚上 看10.53
ctrl+shift+o引入
ctrl+t 查看子类(子类的异常)
new接口的实现类 结合业务
打开源码去看 需要ByteSource 需要就传入
发问 写的时候为什么不把.getSalt直接传到下面呢 ?而是非要封装成一个ByteSource对象呢 ?
因为 底层拿到盐值后 会对盐值做编码处理(自己做封装处理) 所以需要什么就要传什么
然后返回谁谁谁 如下图
很复杂 不必自己写 对照官方规定的模板 代入参数
认证信息获取和封装后 还需要必要的realm配置
上面只写了dao语句,认证信息的获取与封装和必要的realm配置(在同一SpringShiroConfig里面)
分析图
所以需要把信息封装到token中
第一步
第二步
第三步
认证交给框架 自己不用管 只需要获取 然后提交即可
上图对应下面
让登陆才让认证
写好接收客户端的认证信息后 放开(即是匿名访问 无拦截)
只做了登陆 还没做登出
自我实现
dao层 提交已加密的用户信息 对应密码(已被加密那个)
初始页面
客户端运行
doInedxUI页面为什么后面接乱码
解答如下
不要原先缓存的数据 不缓存页面的地址 每次取一个新的页面
登陆的流程基本完成
11.15后 讲异常的处理
写到同一的异常处理类里面
写到同一的异常处理类里面
统一的异常处理类 没建好
接上shiro的配置就可
logout 对应的过滤器
加入配置类 对应推出过滤器 检测到我们点击时退出 底层shiro它会把账户信息从session中移除
只有退出触发了logout过滤器 会把信息移除 然后跳转到对应下图地址
不对的时候 提出 用户或密码不存在 更安全
连续登入5次不正确 就把xxx禁用
任务调度
想看过程
自我实现
实现禁用 然后登入修改权限
登入admin 123456
新增后修改状态
xdd0824 123456
改成禁用状态 再登出查看效果
效果实现直接无法登陆 对应异常抛出的效果
11点47分 有断点流程 晚上
点按钮 确认登入 跳转到服务器端
加入断点 看看用户端(客户端)提交过来的数据是什么数据
看图
ctrl+o 子类 找认证方法 再ctrl+o 不找抽象的类 找具体的
执行 登陆的时候 首先进入控制层
输入正确 也要看服务端(controller层)拿到正确
如上图 都拿到了
直接进入下一个断点
要认证
再看下token里面有没有用户信息
密码是用数组来存的密码
能拿到 就是提交给XXXManager了
大框是访问我们自己的认证代码
通过realm找所有的信息 realms可能多个 指纹认证 刷脸认证
拿到信息就去认证 比对密码
再进去 重写了圈着的方法
这就是认证流程
读源码
出了错 就抛出异常
必须配置凭证匹配器
尊重框架的规则
登入争取 客户端输入得 必须与数据库原有 用户输入的一直才可以(解密 同时MD5加密)
下午 不想让用户进去后可以动日志管理 所有牵扯到授权了
权限设置
顾问对象
子类
找对应权限
把映射分开
业务
admin去禁用启用都没有问题
zhangjj去启用 倒是没有权限
自己实现
1.
2.dao层 添加添加权限信息
html 客户端测试
大面积报错
mapper
与mapper无关 应该是没加@Bean注解
没看到
应该是导包问题
无法解决
还是mapper错误
其他类型错误
有一个切入点
晚上 漏了
0914 权限aop推倒再实现