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

news2025/1/30 16:28:09

 视频链接: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,转成成功

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

马原——5.两大总特征(辩证法)

两大总特征是解释了世界是怎样存在的。 三大规律是对两大总特征的进一步细化 对立统一规律解释了世界是怎样联系的,为什么发展 量变质变规律解释了怎样发展 否定之否定规律那里发展 五对基本范畴解释了联系和发展环节上的逻辑 客观性:不以人的意志为转…

vscode | 开发神器vscode必备优秀插件

目录 一、koroFileHeader1.1 使用方法1.2 配置推荐 二、Markdown Preview Enhanced三、filesize四、Project Manager五、Live Server六、Bookmarks七、Image preview八、Chinese (Simplified) (简体中文) Language九、主题相关9.1 vscode-icons9.2 Winter is Coming Theme9.3 O…

Unity 之 Start 与Update 方法的区别

文章目录 当谈论Unity中的 Start和 Update方法时,我们实际上是在讨论MonoBehaviour类中的两个常用方法,用于编写游戏逻辑。这两个方法在不同的时机被调用,因此您可以根据需要选择在哪个方法中编写特定的代码。 Start 方法: Start…

(线特征)opencv+opencv contribute 配置

写一篇博客,记录开始线特征slam的历程。 在配置环境的时候,可以发现大多数都是用到了opencv3.4.16和其contribute版本,这里进行一个相关操作的教学。配置环境是在Ubuntu下面进行的,建议使用Ubuntu18来进行线特征的配置以及代码的…

JVM核心原理解读(一)---执行引擎

Java虚拟机规范制定了Java字节码执行引擎的概念模型,Java执行引擎作用概括起来就是执行编译产生的Java class文件,为用户提供了底层OS的调用,屏蔽了不同平台硬件和OS的差异性,使得编写的代码无差别的在各个平台运行; JVM运行时内存结构 运行时栈帧 局部变量表---方法的局部变…

mysql使用flashback恢复数据

常在河边走,哪有不湿鞋。如果我们经常操作数据库,很有可能就会造成误操作,假如我们不幸误删了数据,有没有办法快速恢复呢? 这里,我们就以用的最多的mysql举例,聊聊如何快速恢复数据。mysql官方貌…

海外网红力量:加速裂变营销,征服新市场

随着全球互联网的飞速发展,海外市场已经成为越来越多企业追逐的商机之地。在这个多元文化的时代,海外网红已经成为推动营销和品牌传播的强大力量。利用海外网红进行裂变营销已经成为许多企业成功进军海外市场的一项重要策略。本文Nox聚星将和大家探讨如何…

element-ui中的el-table合并单元格

描述: 在写项目的时候有时候会经常遇到把行和列合并起来的情况,因为有些数据是重复渲染的,不合并行列会使表格看起来非常的混乱,如下: 而我们想要的数据是下面这种情况,将重复的行进行合并,使表…

13.4 目标检测锚框标注 非极大值抑制

锚框的形状计算公式 假设原图的高为H,宽为W 锚框形状详细公式推导 以每个像素为中心生成不同形状的锚框 # s是缩放比,ratio是宽高比 def multibox_prior(data, sizes, ratios):"""生成以每个像素为中心具有不同形状的锚框"""in_he…

mysql 默认的4个数据库 介绍

mysql 存储MySQL的用户账号和权限信息,一些存储过程、事件的定义信息 一些运行过程中产生的日志信息,一些帮助信息以及时区信息等 information_schema 存储Mysql服务器 维护的所有其它数据库的信息,比如有哪些表、哪些视图、哪些触发器、哪…

C++设计模式(工厂方法模式)

文章目录 前言一、工厂方法模式介绍二、工厂方法模式和简单工厂模式对比三、工厂方法模式适用场景四、工厂方法模式示例代码总结 前言 本篇文章来带大家学习C中的工厂方法模式。 一、工厂方法模式介绍 工厂方法模式是一种创建型设计模式,用于通过工厂方法创建对象…

jdk新特性 02 .接口增强和函数式接口,方法引用

1.JDK8中接口的新增 在JDK8中针对接口有做增强,在JDK8之前 interface 接口名{ 静态常量; 抽象方法; }JDK8之后对接口做了增加,接口中可以有默认方法和静态方法 interface 接口名{ 静态常量; 抽象方法; 默认方法; 静态方法; }2.默认方法 2.1 为什么要增…

OS 内核级线程

用户级线程是两个栈,核心级线程是两套栈,用户栈和内核栈 用户级是并发(同时触发、交替执行),这个是并行(同时触发可以同时执行) 进入内核的唯一方式是中断 根据TCB的切换,实现内核…

【经验贴】新手项目经理如何接手并管好项目?

最近有刷到这样一些求助帖:初入职场两三年的项目经理现在开始独立带项目,由于缺乏经验不知道从何下手,询问如何能快速接手并管好项目呢?这个话题也引起了大家的热议,今天就给大家分享一下一些实践经验。 1.刚拿到项目时…

如何做好项目进度管理?来看这几个要点!

8个项目管理工具模板、60个项目管理甘特图标模板、赠送30本项目管理电子书https://download.csdn.net/download/XMWS_IT/19886618?spm1001.2014.3001.5503 项目进度管理是指在项目实施过程中,对各阶段的进展程度和项目最终完成的期限所进行的管理。其目的是保证项目…

clickhouse-压测

一、数据集准备 数据集可以使用官网数据集,也可以用ssb-dbgen来准备 1.准备数据 这里最后生成表的数据行数为60亿行,数据量为300G左右 git clone https://github.com/vadimtk/ssb-dbgen.git cd ssb-dbgen/ make1.1 生成数据 # -s 指生成多少G的数据…

Linux C 多进程编程(面试考点)

嵌入式开发为什么要移植操作系统? 1.减小软硬件的耦合度,提高软件的移植性 2. 操作系统提供很多库和工具(QT Open CV),提高开发效率 3.操作系统提供多任务机制,______________________? (提高C…

Zenity 简介

什么使 Zenity Zenity 是一个开源的命令行工具,它提供了一种简单的方式来创建图形化的用户界面(GUI)对话框,以与用户进行交互。它基于 GTK 库,可以在 Linux 和其他 UNIX-like 系统上使用。 Zenity 可以通过命令行或脚…

最新政策丨政务服务电子文件归档和电子档案管理办法说了什么?

随着数字化时代的持续演进,我国政府部门正积极推动数字政府建设,以优化政务服务,提升办事效率。为了适应这一背景,国务院发布了《政务服务电子文件归档和电子档案管理办法》,旨在规范电子档案管理,加强政务…

为什么使用消息队列?消息队列能够做什么?消息队列有哪些?怎么选择?

❤ 作者主页:李奕赫揍小邰的博客 ❀ 个人介绍:大家好,我是李奕赫!( ̄▽ ̄)~* 🍊 记得点赞、收藏、评论⭐️⭐️⭐️ 📣 认真学习!!!🎉🎉 文章目录 为什么使用消…