详谈 springboot整合shiro
背景:
本章将进一步的落地实践学习,在springboot中如何去整合shrio,整个过程步骤有个清晰的了解。
利用Shiro进行登录认证主要步骤:
1. 添加依赖:首先,在pom.xml文件中添加Spring Boot和Shiro的相关依赖。
|
|
2. 创建Shiro配置类:创建一个ShiroConfig类,用于配置Shiro的相关信息和组件。(对于配置的解释和作用见第三章杂谈)
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
|
3. 创建自定义Realm:创建一个MyRealm类,继承AuthorizingRealm并实现相关方法,用于处理认证和授权逻辑
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
|
4. 创建登录接口和登录页面:创建一个登录接口处理用户的登录请求
|
|
整体的执行流程:
-
用户在浏览器中访问登录页面,输入用户名和密码,并点击登录按钮。
-
Controller层的
LoginController类中的doLogin方法被调用,该方法接收用户名和密码作为参数。 -
创建一个
Subject对象,该对象代表当前正在与应用程序交互的用户。 -
创建一个
UsernamePasswordToken对象,将用户名和密码设置为该对象的属性。 -
调用
Subject对象的login方法,将UsernamePasswordToken对象作为参数传递进去。 -
Subject对象将UsernamePasswordToken对象传递给Shiro进行认证。 -
Shiro框架会调用
MyRealm类中的doGetAuthenticationInfo方法,该方法用于处理认证逻辑。 -
在
doGetAuthenticationInfo方法中,从UsernamePasswordToken对象中获取用户名。 -
可以根据需要,从数据库或其他存储中获取与用户名对应的用户信息,例如密码等。
-
将获取到的用户信息与
UsernamePasswordToken对象中的密码进行比较,判断用户是否通过认证。 -
如果认证成功,创建一个
SimpleAuthenticationInfo对象,将用户名、数据库中的密码和Realm名称作为参数传递给它。 -
SimpleAuthenticationInfo对象会被返回给Shiro框架,表示认证成功。 -
Shiro框架会将认证成功的信息保存在
Subject对象中。 -
如果认证失败,将抛出
AuthenticationException异常。 -
在
doLogin方法中,通过捕获AuthenticationException异常,可以处理登录失败的情况,例如重定向到登录失败页面。 -
如果登录成功,可以根据需要执行一些操作,例如重定向到首页或其他需要登录后才能访问的页面。
总结起来,整个执行流程如下:
- 用户输入用户名和密码,并提交登录表单。
- Controller层的
LoginController类中的doLogin方法接收到登录请求。 - 创建
Subject对象,代表当前用户。 - 创建
UsernamePasswordToken对象,将用户名和密码设置为其属性。 - 调用
Subject对象的login方法,将UsernamePasswordToken对象作为参数传入。 - Shiro框架调用
MyRealm类中的doGetAuthenticationInfo方法,处理认证逻辑。 - 在
doGetAuthenticationInfo方法中,获取用户名和密码,并与数据库中的信息进行比较。 - 如果认证成功,返回一个
SimpleAuthenticationInfo对象,表示认证通过。 - 如果认证失败,抛出
AuthenticationException异常。 - 在
doLogin方法中,根据认证结果执行相应的操作,例如重定向到登录成功页面或登录失败页面。
最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
行动吧,在路上总比一直观望的要好,未来的你肯定会感谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入群: 731789136,里面有各种测试开发资料和技术可以一起交流哦。
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

相关文章:
详谈 springboot整合shiro
背景: 本章将进一步的落地实践学习,在springboot中如何去整合shrio,整个过程步骤有个清晰的了解。 利用Shiro进行登录认证主要步骤: 1. 添加依赖:首先,在pom.xml文件中添加Spring Boot和Shiro的相关依赖…...
备忘录模式(Memento)
备忘录模式(Memento Pattern)是一种行为型设计模式,允许在不破坏封装的前提下捕获并保存一个对象的内部状态,以便在以后可以将该对象恢复到原先保存的状态。 备忘录模式通常涉及以下几个角色: 发起人(Originator):创建一个含有其当前状态的备忘录对象,并可以使用备忘录…...
【RocketMQ每日一问】consumeGroup心跳内容是什么样的?
消费者组:消费者所在的消费者组名称。这个信息用于确保同一个消费者组内的消费者不会重复地消费相同的消息。MessageModel:消息模型,可能的值为集群消费或广播消费。ConsumeType:消费类型,可能的值有"主动消费&qu…...
yolov5知识蒸馏
参考代码:https://github.com/Adlik/yolov5 https://cloud.tencent.com/developer/article/2160509 yolov5间的模型蒸馏,相同结构的。 配置参数 parser.add_argument(--t_weights, typestr, default./weights/yolov5s.pt,helpinitial teacher model wei…...
HUAWEI华为笔记本电脑MateBook D 14 2022款 i5 集显 非触屏(NbDE-WFH9)原装出厂Windows11系统21H2
链接:https://pan.baidu.com/s/1-tCCFwZ0RggXtbWYBVyhFg?pwdmcgv 提取码:mcgv 华为MageBookD14原厂WIN11系统自带所有驱动、出厂状态主题壁纸、Office办公软件、华为电脑管家、华为应用市场等预装软件程序 文件格式:esd/wim/swm 安装方式…...
微服务-springcloud(eureka实践, nacos实践)
Spring 体系图 版本关系 eureka 实践 1 父工程依赖 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.6.14</version> </parent> <dependencyManage…...
Hadoop入门学习笔记——五、在虚拟机中部署Hive
视频课程地址:https://www.bilibili.com/video/BV1WY4y197g7 课程资料链接:https://pan.baidu.com/s/15KpnWeKpvExpKmOC8xjmtQ?pwd5ay8 Hadoop入门学习笔记(汇总) 目录 五、在虚拟机中部署Hive5.1. 在node1虚拟机安装MySQL5.2.…...
用Nest 实现大文件分片上传,加速工作效率神器
文件上传是常见需求,只要指定 content-type 为 multipart/form-data,内容就会以这种格式被传递到服务端: 服务端再按照 multipart/form-data 的格式提取数据,就能拿到其中的文件。 但当文件很大的时候,事情就变得不一样…...
将ncnn及opencv的mat存储成bin文件的方法
利用fstream,将ncnn及opencv的mat存储成bin文件。 ncnn::Mat to bin std::ios::binary标志指示文件以二进制模式进行读写, std::ofstream file("output_x86.bin", std::ios::binary); 将input_mat中的宽、高和通道数分别赋值给width、heig…...
dpdk原理概述及核心源码剖析
dpdk原理 1、操作系统、计算机网络诞生已经几十年了,部分功能不再能满足现在的业务需求。如果对操作系统做更改,成本非常高,所以部分问题是在应用层想办法解决的,比如前面介绍的协程、quic等,都是在应用层重新开发的框…...
VTK+QT配置(VS)
先根据vtk配置这个博客配置基本环境 然后把这个dll文件从VTK的designer目录复制到qt的对应目录里 记得这里是debug版本,你也可以配置release都一样的步骤,然后建立一个qt项目,接着配置包含目录,库目录,链接输入&…...
5G边缘计算:解密边缘计算的魔力
引言 你是否曾想过,网络可以更贴心、更智能地为我们提供服务?5G边缘计算就像是网络的小助手,时刻待命在你身边,让数字生活变得更加便捷。 什么是5G边缘计算? 想象一下,边缘计算就像是在离你最近的一层“云…...
Sentinel 流量治理组件教程
前言 官网首页:home | Sentinel (sentinelguard.io) 随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量路由、流量控制、流量整形…...
C语言第五十九弹---介绍说明内存函数memcmp
使用C语言介绍说明内存函数memcmp memcmp是C语言标准库中的一个函数,用于比较两个内存区域的内容是否相同。 源代码: int memcmp(const void* ptr1, const void* ptr2, size_t num);ptr1和ptr2分别是要比较的两个内存区域的指针,num是要比较…...
jar混淆,防止反编译,Allatori工具混淆jar包
文章目录 Allatori工具简介下载解压配置config.xml注意事项 Allatori工具简介 官网地址:https://allatori.com/ Allatori不仅混淆了代码,还最大限度地减小了应用程序的大小,提高了速度,同时除了你和你的团队之外,任何人…...
linux中批量将HEIC转jpg
苹果目前已大量使用HEIC格式的照片,虽然上传到Windows系统的时候是会自动转为jpg的,但也经常会在很多场景中保留了HEIC格式,前两天就收到了一大堆HEIC文件,window10里都打不开,照片的插件是需要付费下载的,…...
听GPT 讲Rust源代码--src/tools(25)
File: rust/src/tools/clippy/clippy_lints/src/methods/suspicious_command_arg_space.rs 在Rust源代码中,suspicious_command_arg_space.rs文件位于clippy_lints工具包的methods目录下,用于实现Clippy lint SUSPICIOUS_COMMAND_ARG_SPACE。 Clippy是Ru…...
一款C++编写的数据可视化库Matplot++
它是基于著名的 Matplotlib 库(Python 中广泛使用的绘图库)构建的,旨在提供类似于 Matplotlib 的功能,但专门为 C 设计。Matplot 支持多种图表类型,包括线图、散点图、条形图、直方图、误差线图等,使数据可…...
paddle 56 将图像分类模型嵌入到目标检测中并实现端到端的部署(用图像分类模型进行目标检测切片分类)
目标检测在功能上一直是涵盖了图像分类的,其包含目标切片检测,目标切片分类。由于某些原因,需要将目标检测的功能退化为检测,忽略其切片分类,使用外部的分类模型。然而这样操作会使得其与原始的部署代码不兼容,为此博主实现将图像分类模型嵌入到目标检测中,并实现端到端…...
SQL手工注入漏洞测试(MySQL数据库)
一、实验平台 https://www.mozhe.cn/bug/detail/elRHc1BCd2VIckQxbjduMG9BVCtkZz09bW96aGUmozhe 二、实验目标 获取到网站的KEY,并提交完成靶场。 三、实验步骤 ①、启动靶机,进行访问查找可能存在注入的页面 ②、通过测试判断注入点的位置(id) (1)…...
EFM8 I2C Slave外设深度解析:从SMBus思维转换到实战应用
1. 项目概述:从SMBus到I2C Slave的思维转换如果你之前主要接触的是SMBus(系统管理总线)设备,现在要上手Silicon Labs的EFM8LB1或EFM8BB3这类8位MCU的I2C Slave(从机)功能,可能会觉得有点“水土不…...
pgwatch2存储后端对比:PostgreSQL vs InfluxDB vs Prometheus – 选择最适合你的监控方案
pgwatch2存储后端对比:PostgreSQL vs InfluxDB vs Prometheus – 选择最适合你的监控方案 【免费下载链接】pgwatch2 PostgreSQL metrics monitor/dashboard 项目地址: https://gitcode.com/gh_mirrors/pg/pgwatch2 pgwatch2是一款灵活的PostgreSQL指标监控和…...
Nix-on-Droid测试与部署最佳实践:确保您的移动环境稳定可靠
Nix-on-Droid测试与部署最佳实践:确保您的移动环境稳定可靠 【免费下载链接】nix-on-droid Nix-enabled environment for your Android device. [maintainerst184256,Gerschtli] 项目地址: https://gitcode.com/gh_mirrors/ni/nix-on-droid 想要在Android设…...
多模态RAG实战:基于CLIP与向量数据库构建图文检索增强生成系统
1. 项目概述:从“Mureo”看多模态检索增强生成最近在折腾一个挺有意思的开源项目,叫“Mureo”。这个名字乍一看有点抽象,但如果你拆开来看,它其实融合了“Multimodal”(多模态)和“Neural”(神经…...
DeepSeek MATH测试SOTA纪录被刷新!但95%团队正用错评估协议——3分钟自查你的benchmark是否合规
更多请点击: https://intelliparadigm.com 第一章:DeepSeek MATH测试SOTA纪录刷新的真相与警示 近期 DeepSeek-Math 模型在 MATH 数据集上以 63.9% 的准确率刷新 SOTA,引发广泛关注。然而深入分析其训练策略与评估协议后发现,该结…...
品牌如何通过AI搜索优化构建长期影响力?GEO战略资产打造可持续竞争壁垒
摘要品牌通过AI搜索优化(GEO)构建长期影响力与权威认知,关键在于将其从短期获客技术升级为沉淀知识、构建AI信任机制的战略资产。核心路径是持续向AI模型提供高质量、结构化的品牌知识,使其成为AI的“可信信源”,并主动…...
智能健身器材核心技术解析:从光学编码器到电机驱动的安华高方案
1. 项目概述:当健身器材遇上“芯”动力如果你拆开一台近两年新出的智能动感单车、划船机或者高端跑步机,大概率会在其控制主板的核心位置,发现一枚印着“Avago”或“Broadcom”标志的芯片。这不是偶然。安华高科技(Avago Technolo…...
ARM CoreSight ROM Tables解析与调试实践
1. ARM CoreSight ROM Tables基础解析在嵌入式调试领域,ARM CoreSight架构提供了一套完整的调试与追踪解决方案。作为该架构的关键组成部分,ROM Tables扮演着系统调试资源的"目录"角色。想象一下走进一个巨大的图书馆,ROM Tables就…...
保姆级教程:用Materials Studio切(111)晶面并构建真空层,一步步教你分析晶体生长
从零开始掌握Materials Studio晶体表面建模:以(111)晶面为例的完整实战指南 在材料模拟与计算化学领域,精确构建晶体表面模型是研究催化反应、界面特性以及材料生长机制的基础环节。Materials Studio作为业界广泛采用的模拟平台,其表面建模功…...
3分钟掌握TestDisk:开源数据恢复终极解决方案
3分钟掌握TestDisk:开源数据恢复终极解决方案 【免费下载链接】testdisk TestDisk & PhotoRec 项目地址: https://gitcode.com/gh_mirrors/te/testdisk 你是否曾因为误删除重要文件而彻夜难眠?是否经历过硬盘分区突然消失的恐慌?别…...


