SpingMVC拦截器-用户登录权限控制分析

 视频链接:08-SpringMVC拦截器-用户登录权限控制代码实现2_哔哩哔哩_bilibili

114

1、做了一个用户跟角色添加的相关操作

1.1 这个后台工程,没有进行相关操作也能够进行登录:

2、现在我做一个用户的权限控制,如果当前我没有进行操作,那我的后台就不进行操作:同时让你跳转到登录页面

3、功能写到那,写到inter...,控制器里面,专门验证一下,页面有没有进行登录

4、业务流程操作是这样的,如下。用户登还是没登,如何进行判断,用session,进行判断,如果不做集群,存session,如果做集群,存到redis里面

4.1

5、以下为设置拦截器的功能:

5.1

6、现在我们演示的是Spring_interceptor工程中转换到Spring_test工程:

7、我先把他发布过去:

8、移除掉

 选择test那个文件:

9、把服务器关掉,然后再重新启动

10、这时候,我要创建一个inter...包

11、建个包

12、创建好之后,我要创建一个权限控制器:

13、

14、写好之后实现固定的那个接口:

15、覆盖一下方法:

16、本质逻辑是判断用户有没有进行登录:

17、session通过request进行获取

17.1.var可以获得session对象:

17.2 获取谁啊!获取user,返回的是user对象

 17.3 强转之后做判断:

 17.4 如果判断没有登录,这里跳转,这里我要设置重定向命令:

 

17.5 重定向

17.6 内部requestContextPath,这个可以获取外部名称

17.7 设置request,login.jsp 

 17.8 你想要这东西,你还得return false 最终不放行

 17.9 如果不是null,就可以实现放行

 17.10 写完这些之后,可以进行相应的配置

 17.11 找到springMVC,将包进行相应的配置

18、内部inter

19、把之前放的路径放到这里;

19.1 配完之后,我们把他发布一下看一下效果

20、效果:这个拦截器,跳转到登录页面已经完成了

21、-------------------接下来实现登录操作

21.1 登录功能比较简单了,表单输入密码和用户名,实现登录:。如果不正确,跳回到我们的登录页面:

22、先找到表单,这里有表单传送数据表单

22.1 设置好路径的方法:接受表单发送过来的数据,这里数据比较少: 

22.2 login执行login方法,并把他返回为一个user对象

 22.3 之后我再对其进行判断,对其进行session的注入,看到产生形参,我就把session给你 

22.4 session的对象就是user

22.5 传递完值之后,跳转页面 

 22.6 如果登录失败去那跳:继续跳到我们的jsp页面

 22. 7 alt + insert 将方法快速实现一下:

 其他

 22.8 把user给返回一下:同时把username和password的数据传输一下

22.9上面红色标记实现一下方法,alt + insert ,然后实现一下Dao层,点旁边的绿色按钮

 22.10 找Dao层进行实现:

 22.11 Dao层用jdbc模板,然后你再接收一下实体

 22.12 接收一个实体:

22.13 后面是一个User.class字节码类型 

22.14 再后面是我们的实参username和password

22.15 这个方法,给我们的返回值返回一下:

 22.16 这里面的user,我们就return一下

22.17 发布一下我们就给他return一下:

23、出现了bug,根本就过不去

24、原因是将密码输入完之后,他直接去找我们的资源 

24.1 你在找资源,我在配置的时候,配置/**,对任何请求都要执行过滤操作:包括你的login

25 重点我们如何选择对那些资源进行放行:要一个exlude

26、如果你要多个资源,你可以选择多个资源进行配置:

27、放行之后,登录成功

28、密码登录

29、Empty 通的结果的数据返回的异常

30、Dao层数据爆了错

==

31、这就是Dao层:

31.1

32、如果用户密码是错的,查不到user,queryForObject查询不到就会抛出异常,我最终想要转换为null,而不是想要真的异常

33、他为什么返回了真么一个异常:

34、他有这个异常为什么不抓呀! 一般情况下,我们会在业务层进行操作,统一try catch,抛出去谁调用这个try catch方法

34.1、 

34.2 catch() 获取对象:

35、try之后,return

36、把异常抛出去,这样就是空的:抛到业务层转成null

37、转成null,转成成功

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/92428.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

VUE笔记(三)vue的语法

一、计算属性 1、计算属性的概念 计算属性是依赖于源数据(data或者属性中的数据),在元数据的基础上进行逻辑运算后得到的新的数据,计算属性要依赖于源数据,源数据数据变化计算属性也会变化 2、计算属性的语法 在vue2中使用computed这个选…

2024年天津市大学软件学院专升本专业课考试大纲

天津市大学软件学院2024年“高职升本科”联合招生专业考试大纲 一、考试性质 天津市大学软件学院“高职升本科”联合招生专业考试是由合格的高职高专毕业生参加的选拔性考试。学校根据考生的成绩,按照已确定的招生计划,德、智、体全面衡量,…

mysql 查询的字段值太长显示不全 group_concat

当前这个字段非常的长,在数据库看的时候也只是显示一部分内容,这是由于group_concat的group_concat_max_len参数的值太小造成的,默认值如下: show VARIABLES like group_concat_max_len 我们需要将这个值调大一点就可以解决上面这…

利用 IDEA IDE 的轻量编辑模式快速查看和编辑工程外的文本文件

作为程序员, 我们都知道 IDE 的很好用的, 它的文本编辑器功能也非常的强大, 用起来非常便捷. 在长年累月的使用中, 我们也变得对其非常熟悉, 以致于使用起其它简单地轻量级的文本编辑器来, 比如什么记事本, Notepad, UltraEdit 等等呀, 觉得既不方便又不熟悉. 关键是很多的操作…

解决`idea`中`database`工具查询起别名乱码问题

文章目录 解决idea中database工具查询起别名乱码问题场景复现如何解决方式一 设置编码方式二:修改字体 原因说明 解决idea中database工具查询起别名乱码问题 场景复现 使用Idea做查询的并且起别名出现了中文乱码 如何解决 方式一 设置编码 settings->输入框输…

基于黑寡妇算法优化的BP神经网络(预测应用) - 附代码

基于黑寡妇算法优化的BP神经网络(预测应用) - 附代码 文章目录 基于黑寡妇算法优化的BP神经网络(预测应用) - 附代码1.数据介绍2.黑寡妇优化BP神经网络2.1 BP神经网络参数设置2.2 黑寡妇算法应用 4.测试结果:5.Matlab代…

Hyperf 如何做到用两个端口 9501/9502 都能连接 Websocket 服务以及多 Worker 协作实现聊天室功能

为何 Hyperf 能够在两个端口上监听 WebSocket 连接? 源码角度来看,在配置了多个 Servers 时,实际上,只启动了一个 Server 注:我之前接触的代码都是启动一个服务绑定一个端口,之前也看过 swoole 扩展的文档…

数据结构--树4.2.1(二叉树)

目录 一、二叉树的存储结构 二、二叉树的遍历 一、二叉树的存储结构 顺序存储结构:二叉树的顺序存储结构就是用一维数组存储二叉树中的各个结点,并且结点的存储位置能体现结点之间的逻辑关系。 链式存储结构:二叉树每个结点最多只有两个孩…

SciencePlots 基本语法及特点

文章目录 简介安装 LaTeXSciencePlots 绘图示例 简介 用户有时需要根据期刊的配图绘制要求进行诸如字体、刻度轴、轴脊、图例等图层属性的定制化修改,耗时的同时也会容易导致用户忽略一些图层细节要求。 SciencePlots 作为一个专门用于科研论文绘图的第三方拓展工…

QT基础教程之二 第一个Qt小程序

QT基础教程之二 第一个Qt小程序 按钮的创建 在Qt程序中&#xff0c;最常用的控件之一就是按钮了&#xff0c;首先我们来看下如何创建一个按钮 QPushButton * btn new QPushButton; 头文件 #include <QPushButton>//设置父亲btn->setParent(this);//设置文字btn-&g…

微服务架构2.0--云原生时代

云原生 云原生&#xff08;Cloud Native&#xff09;是一种关注于在云环境中构建、部署和管理应用程序的方法和理念。云原生应用能够最大程度地利用云计算基础设施的优势&#xff0c;如弹性、自动化、可伸缩性和高可用性。这个概念涵盖了许多方面&#xff0c;包括架构、开发、…

channel并发编程

不要通过共享内存通信&#xff0c;要通过通信共享内存。 channel是golang并发编程中一种重要的数据结构&#xff0c;用于多个goroutine之间进行通信。 我们通常可以把channel想象成一个传送带&#xff0c;将goroutine想象成传送带周边的人&#xff0c;一个传送带的上游放上物品…

【沐风老师】如何在3dMax中将3D物体转化为样条线构成的对象?

在3dMax中如何把三维物体转化为由样条线构成的对象&#xff1f;通常这样的场景会出现在科研绘图或一些艺术创作当中&#xff0c;下面给大家详细讲解一种3dmax三维物体转样条线的方法。 第一部分&#xff1a;用粒子填充3D对象&#xff1a; 1.创建一个三维对象&#xff08;本例…

【广州华锐互动】VR高校虚拟实验教学平台提供丰富的资源支持,提高教学效果

随着科技的不断进步&#xff0c;虚拟现实(VR)技术已经逐渐渗透到各个领域&#xff0c;其中包括教育。 广州华锐互动利用VR虚拟现实技术打造的VR高校虚拟实验教学平台&#xff0c;是一种新型的教学工具&#xff0c;它提供了一个在线的教学资源管理平台&#xff0c;包含教学平台、…

Linux 基金会宣布正式进驻中国

在 LinuxCon 2017 &#xff08;北京&#xff09;即将召开前夕&#xff0c;我们Linux 中国会同 51CTO、开源中国对 Linux 基金会执行董事 Jim Zemlin 进行了一场远跨大洋的视频专访。 在这次专访中&#xff0c;Jim 先生回答了几个开源界和互联网领域关注的问题&#xff0c;并披…

低代码已经发展到什么水平了

陈老老老板&#x1f9b8; &#x1f468;‍&#x1f4bb;本文专栏&#xff1a;生活&#xff08;主要讲一下自己生活相关的内容&#xff09; &#x1f468;‍&#x1f4bb;本文简述&#xff1a;生活就像海洋,只有意志坚强的人,才能到达彼岸。 &#x1f468;‍&#x1f4bb;上一篇…

4.6 TCP面向字节流

TCP 是面向字节流的协议&#xff0c;UDP 是面向报文的协议 操作系统对 TCP 和 UDP 协议的发送方的机制不同&#xff0c;也就是问题原因在发送方。 UDP面向报文协议&#xff1a; 操作系统不会对UDP协议传输的消息进行拆分&#xff0c;在组装好UDP头部后就交给网络层处理&…

春秋云镜:CVE-2019-9042(Sitemagic CMS v4.4 任意文件上传漏洞)

一、题目 靶标介绍&#xff1a; Sitemagic CMS v4.4 index.php?SMExtSMFiles 存在任意文件上传漏洞&#xff0c;攻击者可上传恶意代码执行系统命令。 进入题目&#xff1a; admin/admin /index.php?SMExtSMFiles&SMTemplateTypeBasic&SMExecModeDedicated&SMFil…

苍穹外卖总结

前言 1、软件开发流程 瀑布模型需求分析//需求规格说明书、产品原型↓ 设计 //UI设计、数据库设计、接口设计↓编码 //项目代码、单元测试↓ 测试 //测试用例、测试报告↓上线运维 //软件环境安装、配置第一阶段&#xff1a;需求分析需求规格说明书、产品原型一般来说…

再见 Xshell替代工具Tabby

替代Xshell 之前经常使用Xshell来操作Linux虚拟机&#xff0c;基本上是够用了。但是Xshell免费使用只供非商业用途&#xff0c;而且如果你想用FTP来进行文件传输的话&#xff0c;还需单独下载Xftp。 无意中发现了另一款开源的终端工具Tabby&#xff0c;它直接集成了SFTP功能&…