5.31串讲 SSM相关问题
文章目录
- 5.31串讲 SSM相关问题
- Spring Security(Shiro)
- Security框架认证流程
- Security流程图展示
- Vue
- 相关指令
- 四个阶段
- axios
Spring Security(Shiro)
Spring Security是一个基于Spring 的安全框架,为Web应用程序和服务提供了全面的安全性解决方案。它提供了诸如身份验证、授权、防止跨站点请求伪造(CSRF)、保护会话等安全特性。Spring Security可以与Spring框架完美集成,可以轻松地让您的应用程序获得最佳的安全保护。
作用:验证 和 鉴权
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S0MprUjh-1685533851536)(C:\Users\DELL\AppData\Roaming\Typora\typora-user-images\image-20230531185900353.png)]](https://img-blog.csdnimg.cn/d0097222ab7043fb98c8fd8536f96685.png)
学习框架需要:
- 尊重规则
- 善于查询官方文档
Security框架认证流程
-
在
SecurityConfig配置类中配置好白名单,设置登录页面,关闭跨域攻击防御策略![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pe5OR5fT-1685533851537)(C:\Users\DELL\AppData\Roaming\Typora\typora-user-images\image-20230530195031993.png)]](https://img-blog.csdnimg.cn/549dac6becab42909b3ace0492d4d175.png)
-
当客户端请求路径不在白名单中,Security框架会自动将请求重定向到登录页面
-
在
login.html登录页面中向/login地址发送登录请求时,服务器中UserController里面的login方法处理该请求 -
在
login方法中通过认证管理器manager启动认证,将认证结果保存在Security上下文对象中![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NK5GDJgf-1685533851538)(C:\Users\DELL\AppData\Roaming\Typora\typora-user-images\image-20230530195603293.png)]](https://img-blog.csdnimg.cn/8ace3a7635014e8ca9e4a203fd54f8a0.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cSCrEUgA-1685533851538)(C:\Users\DELL\AppData\Roaming\Typora\typora-user-images\image-20230530200216950.png)]](https://img-blog.csdnimg.cn/591f4620d0ef4f659aef831a1cab2763.png)
-
当
manager启动认证流程后会自动调用UserDetailServiceImpl里面的loadUserByUsername方法,在方法内部,调用UserMapper里面的查询方法通过用户名查询到UserVO。 -
如果查询不到
return null,此时Security框架会抛出异常代表用户名不存在,需要全局异常处理进行处理,如果查询到的密码和用户输入的密码一致,则不抛出异常![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-grVa2rlG-1685533851539)(C:\Users\DELL\AppData\Roaming\Typora\typora-user-images\image-20230530200815954.png)]](https://img-blog.csdnimg.cn/c880c6fe62d44f119914630069848c39.png)
-
UserController中的login方法会执行完,给客户端响应登录成功的信息,如果登录的密码错误,Security框架会抛出代表密码错误的异常,此时也需要全局异常处理类进行处理![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-j4wTM1pG-1685533851539)(C:\Users\DELL\AppData\Roaming\Typora\typora-user-images\image-20230530201119444.png)]](https://img-blog.csdnimg.cn/2e154f10eecb43869fb5115bef7c42fd.png)
Security流程图展示
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-d8ShGL30-1685533851539)(C:\Users\DELL\AppData\Roaming\Typora\typora-user-images\image-20230531191414264.png)]](https://img-blog.csdnimg.cn/9711181dc00042d38ee1ca468b8fb26c.png)
Vue
-
导入JS
<!--引入富文本编辑器相关样式文件--> <link href="https://cdn.staticfile.org/wangeditor5/5.1.23/css/style.min.css" rel="stylesheet"> -
创建Vue对象
<script> let v = new Vue({ el:"#app", //作用域 data:{ //页面数据相关格式 user: {}, //对象 arr: [], //数组 username:"" }, methods:{ //自定义方法 }, created:function(){ //钩子函数,共8个 }, }) </script>
相关指令
文本相关指令
| 指令 | 介绍 |
|---|---|
| {{变量}} | 插值,让当前位置的文本内容和变量进行绑定 |
| v-text=“变量” | 让元素的文本内容和变量进行绑定 |
| v-html=“变量” | 让元素的标签内容和变量进行绑定 |
属性绑定和双向绑定
| 指令 | 介绍 |
|---|---|
| 属性名=“变量” | 让元素的某个属性的值和变量进行绑定 |
| v-model=“变量” | 双向绑定,让控件的值和变量进行双向绑定,当需要获取控件的值的时候使用 |
事件绑定
| 指令 | 介绍 |
|---|---|
| @事件名=“方法” | 给元素添加事件,需要将事件触发的方法声明在methods里面 |
v-for循环遍历指令
| 指令 | 介绍 |
|---|---|
| v-for=“(变量,下标) in 数组” | 循环遍历指令,遍历的同时会生成元素,当需要让页面的内容和数组进行绑定时使用 |
显示隐藏相关指令
| 指令 | 介绍 |
|---|---|
| v-if=“变量” | 让元素是否显示和变量进行绑定,true显示、false不显示(删除元素) |
| v-else | 让元素的显示状态和 v-if 取反 |
| v-show=“变量” | 让元素是否显示和变量进行绑定,true显示、false不显示(隐藏元素) |
四个阶段
1. 初始化=>创建组件=> `beforeCreate` `created`
2. 挂载=>渲染显示组件=> `beforeMount` `mouted`
3. 更新=》修改了变量=》触发视图刷新=> `beforeUpdate` ` `updated`
4. 销毁=》切换页面=》会把组件对象从内存删除=> `beforeDestory ` `destoryed`
- 8个钩子函数,Vue的生命周期
| 钩子函数 | 介绍 |
|---|---|
beforeCreate | 会在实例初始化完成、props解析之后、data(和computed等选项处理之前立即调用。此时不能获得DOM节点 |
created | 在这个阶段vue实例已经创建,以下内容已经设置完成:响应式数据、计算属性、方法和侦听器。然而,此时挂载阶段还未开始,因此$el属性仍不可用。仍然不能获取DOM元素。 |
beforeMount | 在组件内容被渲染到页面之前自动执行的函数,组件已经完成了其响应式状态的设置,但还没有创建DOM节点。 |
mounted | 在组件被渲染之后自动执行的函数。一般我们的异步请求都写在这里。在这个阶段,数据和DOM都已被渲染出来。 |
beforeUpdate | 数据变化的时候自动执行的函数,此时变化后的数据还未渲染到页面之上。 |
updated | 数据变化之后自动执行的函数,此时变化后的数据已经渲染到页面之上。 |
beforeUnmount | 当Vue应用被销毁时,自动执行的函数。 |
unmounted | 当Vue应用被销毁后,且dom完全销毁之后,自动执行的函数。 |
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W85LOLWv-1685533851540)(C:\Users\DELL\AppData\Roaming\Typora\typora-user-images\image-20230531194721963.png)]](https://img-blog.csdnimg.cn/98a4e2865f274a62a0b528b3e77c31b8.png)
axios
- 导入axios
<!--引入Axios-->
<script src="https://cdn.bootcss.com/axios/0.18.0/axios.min.js"></script>
- axios的异步请求
axios.get("url").then(function(response){
});
axios.post("url").then(function(response){
});



















