SpringSecurity之基础认知

前言

之前一直说开一个SpringSecurity的专栏,今天抽空整理一下,准备开始更新。

也欢迎大家订阅此专栏!

什么是SpringSecurity?

Spring是非常成功的Java应用框架,目前是非常主流的开发框架。Spring Securtiy正是我们Spring家族的一员。它基于Spring框架,为我们提供了关于Web应用安全性的一套完整的解决方案

一般而言,Web应用的安全性包括了用户认证(Authentication)以及用户授权(Authorization)这么两个部分,这也正是我们今天所讲解的Spring Security的两大核心功能。

1、用户认证:指的是验证某个用户是否是我们系统中的合法用户,即用户能否对心痛进行访问。认证的前提条件就是用户提供用户名以及密码。通过我们系统来完成对其提供用户名和密码的校验,是否通过。也就是我们常说的系统登录功能中的校验。

2、用户授权:指的是用户是否有权限进行访问和操作。在我们的系统中,往往不同的用户有着不同的权限。比如对于菜单的操作,有的用户可以读取,有的用户可以进行新增。这种不同的权限就是我们所说的授权。通常,系统会给用户分配相对应的角色,然后再通过角色的权限来给用户赋能。也就是我们系统中去判定用户是否有权限去访问或者操作系统。

SpringSecurity的发展史

Spring Security开始于2003年年底,““spring的acegi安全系统”。 起因是Spring开发者邮件列表中的一个问题,有人提问是否考虑提供一个基于spring的安全实现。

在当时Spring的社区相对较小(是和今天的规模比!),其实Spring本身是从2003年初才作为一个sourceforge的项目出现的。 对这个问题的回应是,这的确是一个值得研究的领域,虽然限于时间问题阻碍了对它的继续研究。 有鉴于此,一个简单的安全实现建立起来了,但没有发布。 几周之后,spring社区的其他成员询问安全问题,代码就被提供给了他们。

随后又有人请求,在2004年一月左右,有20万人在使用这些代码。 另外一些人加入到这些先行者中来,并建议在sourceforge上建立一个项目,项目在2004年3月正式建立起来。

在早期,项目本身没有自己的认证模块。 认证过程都是依赖容器管理安全的,而acegi则注重授权。 这在一开始是合适的,但随着越来越多用户要求提供额外的容器支持,基于容器认证的限制就显现出来了。

还有一个有关的问题,向容器的classpath中添加新jar,常常让最终用户感到困惑,又容易出现配置错误。 随后acegi加入了认证服务。大约一年后,acegi成为spring的官方子项目。 经过了两年半在许多生产软件项目中的活跃使用和数以万计的改善和社区的贡献,1.0.0最终版本发布于2006年5月。 acegi在2007年年底,正式成为spring组合项目,被更名为“Spring Security”。

同类产品对比

下面分别从各自的特点说明一下Shiro和SpringSecurity

SpringSecurityShiro

1、Spring技术栈的加持

2、和Spring完美的无缝整合
3、权限控制比较全面
4、专门针对Web开发而设计

        旧版本不能脱离Web环境而使用

        新版本对整体框架进行分层抽取,形成了核心模块和web模块,引入核心模块就能够完5全脱离Web环境单独使用

5重量级框架

1、Apache下的轻量权限控制框架

2、理念是把复杂的事情变得简单,对性能有更高的要求的互联网应用比较友好

3、通用性比较好

        不局限于Web环境,可以脱离Web使用

        在Web环境下一些特定的需求是需要我们定制代码的开发

总结

Spring Security 是 Spring 家族中的一个安全管理框架,其实,在 Spring Boot 出现之 前,Spring Security 它已经发展了多年了,但是使用的并不多,安全管理框架这个领域,一直 是 Shiro 的天下。

相对于 Shiro,在 SSM 中整合 Spring Security 都是比较繁琐,所以,Spring Security 虽然功能比 Shiro 强大,但是使用的反而没有 Shiro 多(Shiro 虽然功能没有 Spring Security 多,但是对于大部分项目而言,Shiro 也够用了)。

自从 Spring Boot 出现之后,Spring Boot 对于 Spring Security 提供了自动化配置的 案,可以使用更少的配置来使用我们的Spring Security框架。

因此,目前,常见的安全管理技术栈的组合是这样的:

• SSM + Shiro

• Spring Boot/Spring Cloud + Spring Security

以上只是一个推荐的组合而已,如果单纯从技术上来说,无论怎么组合,都是可以运行的。

模块划分

 

前置知识

1、掌握Spring框架

2、掌握SpringBoot的基本使用

3、掌握JavaWeb的相关技术(比如过滤器)

好了,关于SpringSecurity之基础认知就先到这里。

欢迎大家点击下方卡片,关注《coder练习生》

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

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

相关文章

基于K-最近邻算法构建红酒分类模型

基于K-最近邻算法构建红酒分类模型 描述 Wine红酒数据集是机器学习中一个经典的分类数据集,它是意大利同一地区种植的葡萄酒化学分析的结果,这些葡萄酒来自三个不同的品种。数据集中含有178个样本,分别属于三个已知品种,每个样本…

移动App测试实战—专项测试

移动App测试实战—专项测试 我们在进行了手工的功能测试之后,也开发了一些自动化测试用例,并且做了性能测试之后,测试工作看似比较完整了。但是当我们的App在大量的用户那里被安装和使用的时候,还是会有很多我们之前没有预料的问题…

微服务+springcloud+springcloud alibaba学习笔记【Hystrix(豪猪哥)的使用】(6/9)

Hystrix(豪猪哥)的使用 6/91、Hystrix熔断器概述2、HyStrix重要概念3、hystrix案例3.1 新建模块 Cloud-provider-hystrix-payment80013.2 创建带降级的order模块 Cloud-comsumer-feign-hystrix-order803.3 配置服务降级:3.3.1 服务降级 Cloud-provider-h…

3年功能测试无情被裁,3个月学习自动化测试重新开始........

前言 不知不觉在软件测试行业工作了3年之久,虽然说我是主做的功能测试,但是我也一直是兢兢业业的呀,不曾想去年7月份无情被辞的消息让我感到一阵沉重。我曾经一直坚信自己的技能和经验足以支撑我在这个领域的未来,但现实却告诉我&…

日撸 Java 三百行day31

文章目录day31 整数矩阵及其运算面向对象思想java异常处理java中的getter和setter方法代码day31 整数矩阵及其运算 面向对象思想 结合之前day7和day8面向过程开发,只关注了矩阵加法和矩阵乘法的功能。而day31是面向对象开发,一个矩阵类,在这…

傅盛“追风”GPT,猎户星空春天来了?

GPT的横空出世,让冷清已久的商用服务机器人市场,又有了“新故事”。 从技术底层逻辑而言,服务机器人受到这类新技术的影响会更为明显。因为抛开硬件,服务机器人的内核其实就是AI,GPT大模型的出现显然成了现阶段该产业进…

KDSL-82轻型升流器

一、产品概述 KDSL-82 1000A大电流发生器是一种作为检验用的电流源,大电流试验器采用ARM芯片控制输出工艺和大容量的环形变压器,并且配有液晶屏显示的表计,同时显示一、二次电流、变比和秒表接点(或电位)的动作时间。外配铝合金机箱&#xff…

Mybatis核心

文章目录前言一、Configuration二、MappedStatement三、SqlSession四、Executor五、StatementHandler六、ParameterHandler七、ResultSetHandler八、TypeHandler总结前言 SqlSession是MyBatis提供的面向用户的操作数据库API。那么MyBatis底层是如何工作的呢?为了解…

SpringCloud-Gateway实现网关

网关作为流量的入口,常用的功能包括路由转发、权限校验、限流等Spring Cloud 是Spring官方推出的第二代网关框架,由WebFluxNettyReactor实现的响应式的API网关,它不能在传统的servlet容器工作,也不能构建war包。基于Filter的方式提…

​破除“内卷”,什么才是高阶智能座舱更优方案?

下一代智能座舱雏形已现。 从多屏互动到舱内全场景交互,从中控娱乐快速延伸到更多元化的车内娱乐平台;越来越多元化功能集中上车,座舱空间的营造(包括氛围灯、香氛等)以及AR技术的应用等等,开始深刻影响着…

关于ROS机器人-文心一言和CatGPT怎么看-

交流截图: 文字版本如下(W-文心;C-猿如意): 如何通过蓝桥云课学习ROS机器人? W: 如果你想通过蓝桥云课学习ROS机器人,可以按照以下步骤进行: 确认ROS机器人的版本和教…

能自动翻译的软件-最精准的翻译软件

批量翻译软件是一种利用自然语言处理技术和机器学习算法,可以快速翻译大量文本内容的工具。批量翻译软件可以处理多种格式的文本,包括文档、网页、邮件、PDF等等,更符合掌握多语言的计算机化需求。 147CGPT翻译软件特点: 1.批量任…

opencv:介绍 SIFT(尺度不变特征变换)及其使用(一)

在本章中 我们将了解 SIFT 算法的概念 我们将学习如何找到 SIFT 关键点和描述符。 理论 在过去的几章中,我们了解了一些角点检测器,如 Harris 等。它们具有旋转不变性,这意味着即使图像旋转,我们也可以找到相同的角点。这是显而易见的,因为旋转后的图像中的角点仍然是角点…

(链表专题) 328. 奇偶链表 ——【Leetcode每日一题】

328. 奇偶链表 给定单链表的头节点 head ,将所有索引为奇数的节点和索引为偶数的节点分别组合在一起,然后返回重新排序的列表。 第一个 节点的索引被认为是 奇数 , 第二个 节点的索引为 偶数 ,以此类推。 请注意,偶…

腾讯云轻量应用服务器搭建网站教程(WordPress为例)

腾讯云轻量应用服务器搭建WordPress网站教程,先安装WordPress应用镜像,然后远程连接轻量应用服务器获取WP用户名和密码,域名DNS解析到轻量服务器IP地址,登陆WordPress后台管理全过程,腾讯云百科来详细说下腾讯云轻量服…

弹塑性力学--应变硬化

在单轴拉伸试验中,当应力超过屈服强度后,需要施加更大的载荷产生更大的应力,才会使材料发生更多的塑性变形。随着塑性应变的增加,材料变得更强、更难以变形了,因此这个阶段称为“应变硬化”(Strain Hardeni…

Vue语法糖<script setup>详解,用最快的方式让你看懂和<script>的区别

前言 Vue3出来已经3年了&#xff0c;但是前两天在百度上搜索有关setup语法糖的细节时&#xff0c;发现很多博客关于语法糖细节部分&#xff0c;还是讲的很粗糙&#xff0c;因此决定自己来写一篇入门的博客&#xff0c;方便大家快速上手。 <script setup>简介 它是Vue3…

项目沟通管理流程的6大规范步骤

1、建立沟通计划 需要对整个项目的沟通对象、沟通内容、沟通频率、沟通方法等各方面&#xff0c;进行计划和安排。尤其需明确沟通机制&#xff0c;建立完整的沟通计划。并根据项目沟通的具体情况&#xff0c;实时添加和修订计划&#xff0c;以保证沟通管理计划的持续适用性。 项…

拐点!智能座舱破局2023

“这是我们看到的整个座舱域控渗透率&#xff0c;2022年是8.28%&#xff0c;主力的搭载车型仍然是30-35万区间。”3月29日&#xff0c;2023年度&#xff08;第五届&#xff09;高工智能汽车市场峰会上&#xff0c;高工智能汽车研究院首发《2022-2025年中国智能汽车产业链市场数…

每日学术速递4.11

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.InstantBooth: Personalized Text-to-Image Generation without Test-Time Finetuning 标题&#xff1a;InstantBooth&#xff1a;无需测试时间微调的个性化文本到图像生成 作者&a…