SpringSecurity6从入门到上天系列第一篇:SpringSecurity6开篇介绍从概念开始把SpringSecurity6送上天

本文主要是介绍SpringSecurity6从入门到上天系列第一篇:SpringSecurity6开篇介绍从概念开始把SpringSecurity6送上天,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

一:什么是SpringSecurity

1:核心内容

(一):用户认证Authentication

(二):用户授权Authorization

2:安全框架对比

(一):Shiro

(二):Spring Security

(三):Sa-Token

(四):开发者自定义

二:SpringSecurity的历史

1:SpringSecurity前身

2:SpringSecurity迭代历史

3:SpringBoot对SpringSecurity的颠覆


文章简介:本文参考自大神孙哥的分享,这里可以找到孙哥:孙哥个人主页
作者简介:一个颜值99分,只比孙哥差一点的程序员
本专栏简介:话不多说,让我们和孙哥一起干翻SpringSecurity6!

一:什么是SpringSecurity

        Spring Security是个功能强大,且高度可定制的身份验证和访问控制框架。它是保护基于 Spring应用程序的事实标准。

        Spring Security是一个框架,专注于为java 应用程序提供身份验证和授权。与所有 Spring项目样,spring Security 的真正强大之处在于它可以轻松地扩展以满足自定义需求。

        Spring Security是Spring家族中的一个 功能强大、可进行 身份验证 (认证) 和 访问控制(授的框架,用于实现系统中的 权限管理

1:核心内容

        一般来说,Web应用的安全性包括 用户认证 和 用户授权 两个部分,这两点也是SpringSecurity的主要核心内容。

(一):用户认证Authentication

        用户认证,就是验证一个用户是否是合法身份,能否访问该系统的过程,最简单的用户认证方式就是要求用户输入的用户名和密码,系统通过用户名和密码来校验用户身份是否合法。常见的认证方式还有 基于生物学特征的身份验证,需要录入指纹、人脸识别等;还有要求通过硬件Key等刷卡的系统,需要刷卡。

(二):用户授权Authorization

        用户授权,就是控制一个合法用户有权限执行哪些操作,也就是访问控制,控制谁能访问哪些资源。用户在身份认证后,需要分配权限方可访问系统的资源,对于没有权限的资源用户是不能访问的。如,购物网站 买家登录系统能查询、加购物车、下订单,卖家登录后可以添加商品、修改价格、发货,卖家能做的操作买家是不能操作的,这就是不同的人有不同的权限,做不同的事情。

2:安全框架对比

        在 Java EE 企业级开发中,安全管理架目前比较常见的有:

(一):Shiro

        优点: 轻量级的安全管理框架 (Apache提供) 、简单(把复杂的事情变简单)、易于集成也可以在JavaSE环境中使用等。
        缺点: 在微服务时代,shiro就显得力不从心了,在微服务面前和扩展方面,无法充分展示自己的优势。

(二):Spring Security

        优点: 作为 Spring家族中的一员,和Spring等技术可以实现无缝整合。同时对OAuth2有着良好的支持,再加上Spring Cloud对 Spring Security 的不断加持 (推出Spring Cloud Security),让Spring Securiy不知不觉中成为微服务项目的首选安全管理方案。

        缺点: 重量级

        当前微服务体系首选!他的功能比shiro强大的多得多!

(三):Sa-Token

        轻量级的Java权限认证框架,主要解决登录认证、权限认证、OAuth2.0、分布式Session会话、微服务网关鉴权等一系列权限相关问题。Sa-Token使用简单,功能强大,只需一行代码就可以完成会话登录或校验登录状态。

        Sa-Token更适合于前后台分离架构,支持多种模式和场景的token生成和验证。

        Sa-Token是一个相对较新的框架,但已经获得了不少关注和好评

(四):开发者自定义

        即程序员开发实现权限管理,基于角色的访问控制 (Role-Based Access Control简称0RBAC)。但是一个系统的安全,不仅仅是登录和权限控制这么简单,我们还要考虑种各样可能存在的网络攻击以及防御策略,从这个角度来说,开发者自己实现安全管理也并非是一件容易的事情,只有大公司才有足够的人力物力去支持这件事情。

二:SpringSecurity的历史

1:SpringSecurity前身

        Spring Security 最早叫 Acegi Security,是基于 Spring,可以帮助我们为项目建立丰富的角色与权限管理系统。Acegi security 虽然好用,但是最为人诟病的则是它臃肿烦琐的配置这一问题最终也遗传给了 Spring Security。

2:SpringSecurity迭代历史

        Acegi Security始于2003 年
        2007年被并入Spring组合项目,并更名为 Spring Security
        2008 年4月发布了改名后的第个版本 Spring Security 2.0.0Spring Security 最新版本6.1.5,SNAPSHOT版本6.2.0

3:SpringBoot对SpringSecurity的颠覆

        和Shiro 相比,Spring Security重量级并且配置烦琐。自从 Spring Boot 推出后,就彻底颠覆了传统的 JavaEE 开发,自动化配置让许多事情变得非常容易。SpringBoot 对SpringSecurity 提供了自动化配置方案,只需要引入一个依赖,不需要任何额外配置,!项目的所有接口就会被自动保护起来了。在 Spring Cloud 中,很多涉及安全管理的问题,也是 Spring Security 依赖两行配置就能搞定,在和 Spring 家族的产品一起使用时,Spring Security 的优势就非常明显了

这篇关于SpringSecurity6从入门到上天系列第一篇:SpringSecurity6开篇介绍从概念开始把SpringSecurity6送上天的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/310864

相关文章

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

MySQL中慢SQL优化的不同方式介绍

《MySQL中慢SQL优化的不同方式介绍》慢SQL的优化,主要从两个方面考虑,SQL语句本身的优化,以及数据库设计的优化,下面小编就来给大家介绍一下有哪些方式可以优化慢SQL吧... 目录避免不必要的列分页优化索引优化JOIN 的优化排序优化UNION 优化慢 SQL 的优化,主要从两个方面考虑,SQL 语

C++中函数模板与类模板的简单使用及区别介绍

《C++中函数模板与类模板的简单使用及区别介绍》这篇文章介绍了C++中的模板机制,包括函数模板和类模板的概念、语法和实际应用,函数模板通过类型参数实现泛型操作,而类模板允许创建可处理多种数据类型的类,... 目录一、函数模板定义语法真实示例二、类模板三、关键区别四、注意事项 ‌在C++中,模板是实现泛型编程

Python实现html转png的完美方案介绍

《Python实现html转png的完美方案介绍》这篇文章主要为大家详细介绍了如何使用Python实现html转png功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 1.增强稳定性与错误处理建议使用三层异常捕获结构:try: with sync_playwright(

Java使用多线程处理未知任务数的方案介绍

《Java使用多线程处理未知任务数的方案介绍》这篇文章主要为大家详细介绍了Java如何使用多线程实现处理未知任务数,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 知道任务个数,你可以定义好线程数规则,生成线程数去跑代码说明:1.虚拟线程池:使用 Executors.newVir

Python FastAPI入门安装使用

《PythonFastAPI入门安装使用》FastAPI是一个现代、快速的PythonWeb框架,用于构建API,它基于Python3.6+的类型提示特性,使得代码更加简洁且易于绶护,这篇文章主要介... 目录第一节:FastAPI入门一、FastAPI框架介绍什么是ASGI服务(WSGI)二、FastAP

JAVA SE包装类和泛型详细介绍及说明方法

《JAVASE包装类和泛型详细介绍及说明方法》:本文主要介绍JAVASE包装类和泛型的相关资料,包括基本数据类型与包装类的对应关系,以及装箱和拆箱的概念,并重点讲解了自动装箱和自动拆箱的机制,文... 目录1. 包装类1.1 基本数据类型和对应的包装类1.2 装箱和拆箱1.3 自动装箱和自动拆箱2. 泛型2

四种Flutter子页面向父组件传递数据的方法介绍

《四种Flutter子页面向父组件传递数据的方法介绍》在Flutter中,如果父组件需要调用子组件的方法,可以通过常用的四种方式实现,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录方法 1:使用 GlobalKey 和 State 调用子组件方法方法 2:通过回调函数(Callb

Python进阶之Excel基本操作介绍

《Python进阶之Excel基本操作介绍》在现实中,很多工作都需要与数据打交道,Excel作为常用的数据处理工具,一直备受人们的青睐,本文主要为大家介绍了一些Python中Excel的基本操作,希望... 目录概述写入使用 xlwt使用 XlsxWriter读取修改概述在现实中,很多工作都需要与数据打交

java脚本使用不同版本jdk的说明介绍

《java脚本使用不同版本jdk的说明介绍》本文介绍了在Java中执行JavaScript脚本的几种方式,包括使用ScriptEngine、Nashorn和GraalVM,ScriptEngine适用... 目录Java脚本使用不同版本jdk的说明1.使用ScriptEngine执行javascript2.