尚硅谷-SpringSecurity

news2024/12/23 13:08:01

一、SpringSecurity是什么

SpringSecurti基于Spring框架,提供了一套Web应用安全性的完整解决方案
一般来说,Web应用的安全性包括用户认证(Authenticataion)和用户授权(Authorization)两个部分
这两点也是Spring Security重要核心功能
(1)用户认证:用户是否能登录
(2)用户授权:用户是否有权限去做某些事情

二、SpringSecurity与Shiro对比

SpringSecurity特点:
(1)和Spring无缝整合
(2)全面的权限控制
(3)专门为Web开发而涉及
(4)重量级(缺点)
Shiro特点:
(1)轻量级
(2)通用性
总结: 功能强于Shiro,但比Shiro复杂

三、SpringSecurity引入

在这里插入图片描述
此时访问接口会先弹出用户登录页面
用户名:user
密码:在这里插入图片描述

四、SpringSecurity基本原理

SpringSecurity本质是一个过滤器链,有很多过滤器

通过查看源码
FilterSecurityInterceptor:是一个方法级的权限过滤器,基本位于过滤链的最底部
ExceptionTranslationFilter:是个异常过滤器,用来处理再认证授权过程中抛出的异常
UsernamePasswordAuthenticationFilter:对/login的POST请求做拦截,校验表单中用户名,密码

过滤器是如何加载的?
(springboot会自动化配置)
在这里插入图片描述
两个重要接口

UserDetailsService接口: 查询数据库用户名和密码过程
当什么也没有配置的时候,账号和密码是由Spring Security定义生成的。而在实际项目中账号和密码都是从数据库中查询出来的。所以我们要通过自定义逻辑控制认证逻辑。
如果需要自定义逻辑,只需要实现UserDetailsService接口即可。
(1)创建类继承UsernamePasswordAuthenticationFilter,重写三个方法
(2)创建类实现UserDetailService,编写查询数据过程,返回User对象,这个User对象是安全框架提供对象
PasswordEncoder接口: 数据机密接口,用于返回User对象里面的密码

五、Web权限方案

(1)认证
(2)授权

1、设置登录的用户名和密码
第一种方式:通过配置文件
在这里插入图片描述
第二种方式:通过配置类
在这里插入图片描述
第三种方式:自定义编写实现类
第一步:创建配置类,设置使用哪个userDetailsService实现类
在这里插入图片描述
第二步:编写实现类,返回User对象,User对象有用户名密码和操作权限
在这里插入图片描述

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

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

相关文章

【2023程序员必看】产品经理行业分析

今天我要给大家推荐一个政策好,薪酬高,发展好,门槛低,且容易实现CEO总裁梦的岗位。当当当当当~产品经理,不用写代码的高薪互联网岗位! 接下来我们就来聊聊它的政策机会,职业前景与薪资待遇&…

mac无法启用443端口的解决方案

前言:在macOS中,对于1024以下的端口需要使用root权限才可以使用,因此在mac中启动本地的vue-cli项目的时候,端口443无法正常使用,即使在配置文件中配置了443端口,启动项目的时候,仍然会是1024端口…

良品铺子:金选年货礼盒里,装着“高端零食”的初心

撕下一页日历,春节的脚步越来越近。自古以来,置办年货就是过年不可或缺的环节,年货中包含着浓浓的年味。“农家腊月为食忙,转换时空去品尝,腊菜藏于坛子里,鲜鱼养在自家塘,粉丝豆泡鸡汤热&#…

node实现文件上传和下载

一、node实现文件上传 1. FormData对象:以对象的方式来表示页面中的表单,又称为表单对象。以key-value的方式来保存数据,XMLHttpRequest对象可以轻松地将表单对象发送到服务器端 ​ (1)是一个构造函数:ne…

Talk预告 | 字节跳动(北美)软件工程师桑燊:风格化3D虚拟形象的创建

本期为TechBeat人工智能社区第469期线上Talk! 北京时间1月5日(周四)20:00,字节跳动(北美) 计算机视觉与图形学软件工程师——桑燊的Talk将准时在TechBeat人工智能社区开播! 他与大家分享的主题是: “风格化3D虚拟形象的创建”,届时…

mongodb 分组子文档合并

【问题】Hi, i am trying to use mongodb aggregate query using $setUnion, $project and also $group to group the documents. The structure of document is{ “_id” : ObjectId(“55014006e4b0333c9531043e”), “acls” : { “append” : { “users” : [ObjectId(“54f…

domain_fronting域名前置检测调研笔记

暗度陈仓:基于国内某云的 Domain Fronting 技术实践 https://www.anquanke.com/post/id/195011?fromtimeline 1.作者提到因为 CDN 的存在,访问网站时访问的实际上只是 CDN,而不是直接和网站的真实服务器进行通信,所以利用 CDN 的…

【虹科云展厅】虹科赋能汽车智能化云展厅今日正式上线!

虹科2023年开年福利来了! 聚焦前沿技术,【虹科赋能汽车智能化云展厅】正式上线,本次云展厅围绕“汽车以太网/TSN、汽车总线、智能网联、电子测试与验证、自动驾驶”等核心话题,为您带来如临展会现场般的讲演与介绍,更…

【MySQL】MySQL基本数据类型

序号系列文章1【MySQL】MySQL介绍及安装2【MySQL】MySQL基本操作详解3【MySQL】MySQL基本数据类型文章目录1,数字类型1.1,整型类型1.2,浮点数类型1.3,定点数类型1.4,BIT类型1.5,直接常量2,时间和…

2024在职考研|MBA/MPA/MEM管理类硕士报考流程及基础问题扫盲

各位小伙伴们,2024年研究生备考工作即将启程!作为在职人群,想攻读双证硕士可以选择的专业比较有限,其中管理类硕士是很多在职考生可以考虑的。专注管理类联考辅导领域的达立易考教育为2024级考生梳理基本流程和关注的问题&#xf…

举一反三-zabbix监控nginx

监控nginx需要修改nginx配置文件,添加如下: location /nginx_status { stub_status; allow 127.0.0.1; allow 192.168.1.71; deny all; } 这里边192.168.1.71是这台服务器的IP。 保存退出,重启…

【阶段二】Python数据分析Pandas工具使用06篇:探索性数据分析:异常数据的检测与处理

本篇的思维导图: 探索性数据分析:异常数据的检测与处理 异常值也称为离群点,就是那些远离绝大多数样本点的特殊群体,通常这样的数据点在数据集中都表现出不合理的特性。如果忽视这些异常值,在某些建模场景下就会导致结论的错误(如线性回归模型、K均值聚类等),所以在数据…

《杜拉拉升职记》读后感

主要是那封拉拉写给李都的信,内容:一、关于什么样的职位算好职位1.你的找一家好公司,什么是好公司?1)产品附加值高,生意好,并且从业务线看,具备持续发展的能力和前景;2)有专业的/聪明能干的/经验丰富的/并…

ESP IDF:创建并打印vector的元素值

ESP IDF:创建并打印vector的元素值 程序&#xff1a; #include <stdio.h> #include std::vector v; std::vector::iterator pBegin v.begin(); std::vector::iterator pEnd v.end(); void test_vector() { v.push_back(10); v.push_back(20); v.push_back(30); v.…

iPhone 14微信闪退怎么办?iPhone 14微信闪退解决办法分享

大家在iPhone上使用微信的时候肯定都有遇到过微信闪退的情况&#xff0c;闪退问题一旦出现&#xff0c;就会严重影响我们的正常使用&#xff0c;特别是使用频繁的APP。 iPhone 14微信闪退是什么原因造成的&#xff1f;iPhone 14微信闪退怎么办&#xff1f; 一、缓存垃圾过多 …

Qt扫盲-QLinkedList理论总结

QLinkedList理论总结一、概述二、使用说明1. 声明链表2. 获取元素、链表信息3. 删除元素4. 添加元素5. 遍历元素一、概述 QLinkedList是Qt的泛型容器类之一。它存储一个值列表&#xff0c;并提供基于迭代器的访问以及常量时间的插入和删除。 QList、QLinkedList和QVector提供类…

JavaScript刷LeetCode模板技巧篇(一)

虽然很多人都觉得前端算法弱&#xff0c;但其实 JavaScript 也可以刷题啊&#xff01;最近两个月断断续续刷完了 leetcode 前 200 的 middle hard &#xff0c;总结了一些刷题常用的模板代码。 常用函数 包括打印函数和一些数学函数。 const _max Math.max.bind(Math); co…

【C++】stack和queue

文章目录前言&#xff08;重点&#xff09;一、stack1、 stack的介绍2、queue的使用3、stack的模拟实现二、queue1、queue的介绍2、queue的使用3、queue的模拟实现三、容器适配器1、什么是容器适配器呢&#xff1f;2、STL标准库中stack和queue的底层结构四、deque1、deque的原理…

设计模式之单例模式(懒汉, 饿汉)

文章目录一. 单例模式概述二. 单例模式的实现1. 饿汉模式2. 懒汉模式一. 单例模式概述 单例模式是一种常用的软件设计模式, 该模式的主要目的是确保某一个类在内存中只能有一个实例对象, 通过单例模式的方法创建的类在当前进程中只有一个实例对象. 常见的单例模式有两种: 饿…

制作系统安装(微软操作系统系统)

系统安装制作步骤 准备工具&#xff1a;笔记本电脑 8G以上u盘 镜像ISO文件 微软系统下载&#xff1a;https://msdn.itellyou.cn/ 复制连接到迅雷下载&#xff0c;进行系统镜像下载。 U盘制作工具下载和制作&#xff1a; 制作工具网站下载&#xff1a;http://rufus.ie/zh/ 准…