Spring Security简介

什么是Spring Security  

         Spring Security是 Spring提供的安全认证服务的框架。 使用Spring Security可以帮助我 们来简化认证和授权的过程

        官网:Spring Security

对应的maven坐标:

<!--security启动器-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>

权限控制

认证和授权概念

问题1:在生产环境下我们如果不登录后台系统就可以完成这些功能操作吗?

答案显然是否定的,要操作这些功能必须首先登录到系统才可以。

问题2:是不是所有用户,只要登录成功就都可以操作所有功能呢?

答案是否定的,并不是所有的用户都可以操作这些功能。不同的用户可能拥有不同的权限,这就需要进行授权了。

认证:系统提供的用于识别用户身份的功能,通常提供用户名和密码进行登录其实就是在进行认证,认证的目的是让系统知道你是谁。

授权:用户认证成功后,需要为用户授权,其实就是指定当前用户可以操作哪些功能。

权限模块数据模型(5张表和七张表)

        前面已经分析了认证和授权的概念,要实现最终的权限控制,需要有一套表结构支撑:

        用户表user、权限表permission、角色表role、菜单表menu、用户角色关系表 user_role、角色权限关系表role_permission、角色菜单关系表role_menu。

5张表

用户表user(name,password):阿三,阿五
        用户角色关联表user_role(user_id,role_id)
角色表role(name):院长,医生,护士
        角色权限许可关联表relo_permission(role_id,permission_id)
权限许可表permission(name):(菜单)检查项管理,检查组管理;(菜单内按钮)删除检查项,编辑检查组

7张表

用户表user(name,password):阿三,阿五
        用户角色关联表user_role(user_id,role_id)
角色表role(name):院长,医生,护士
        角色菜单许可关联表roel_menu(role_id,menu_id)
菜单许可表menu(name): 检查项管理,检查组管理
        角色按钮许可关联表role_permission(role_id,permission_id)
按钮许可表表permission(name):删除检查项,编辑检查组

认证过程:只需要用户表就可以了,在用户登录时可以查询用户表user进行校验,判断用户输入的用户名和密码是否正确。

授权过程:用户必须完成认证之后才可以进行授权,首先可以根据用户查询其角色,再根据角色查询对应的菜单,这样就确定了用户能够看到哪些菜单。然后再根据用户的角 色查询对应的权限,这样就确定了用户拥有哪些权限。所以授权过程会用到上面5张表或者7张表。

同款产品对比

常用的权限框架除了Spring Security,还有Apache的shiro框架。

SpringSecurity

特点:

⚫ 和 Spring 无缝整合。

⚫ 全面的权限控制。

⚫ 专门为 Web 开发而设计。

​ ◼旧版本不能脱离 Web 环境使用。

​ ◼新版本对整个框架进行了分层抽取,分成了核心模块和 Web 模块。单独引入核心模块就可以脱离 Web 环境。

⚫ 重量级。

Shiro

Apache 旗下的轻量级权限控制框架。

特点:

⚫ 轻量级。Shiro 主张的理念是把复杂的事情变简单。针对对性能有更高要求

的互联网应用有更好表现。

⚫ 通用性。

​ ◼好处:不局限于 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

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

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

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

相关文章

Scala入门01

Spark入门 1.入门 spark采用Scala语言开发 Spark是用来计算的 Scala掌握&#xff1a;特性&#xff0c;基本操作&#xff0c;集合操作&#xff0c;函数&#xff0c;模式匹配&#xff0c;trait&#xff0c;样例类&#xff0c;actor等内容。 2.内容讲解 2.1 Scala简介 在http…

Missing or invalid credentials.(Git push报错解决方案)

前言 本文主要讲解git push后报错Missing or invalid credentials的解决方案。这里针对的是windows的。 编程环境&#xff1a;VsCode 问题原因 问题翻译起来就是 凭据缺失或无效。这里我们解决方案是取消vscode里面默认的控制终端git凭据来解决,具体方案如下. 解决方案 1…

金田金业:中国大妈十年炒黄金后有何启发? 黄金交易要有策略

十多年前的2013年中国大妈炒黄金曾威震华尔街&#xff0c;一度成为投资界佳话。当时经过经历2008年全球金融危机五年后随着美国经济持续改善、美国缩减量化宽松规模&#xff0c;在美元强力反弹压制下&#xff0c;国际现货黄金从1700美元下跌到1300美元左右。正是在这个相对低点…

Shell中正则表达式

1.正则表达式介绍 1、正则表达式---通常用于判断语句中&#xff0c;用来检查某一字符串是否满足某一格式 2、正则表达式是由普通字符与元字符组成 3、普通字符包括大小写字母、数字、标点符号及一些其他符号 4、元字符是指在正则表达式中具有特殊意义的专用字符&#xff0c…

C++------高精度减法

题目描述&#xff1a; 分析&#xff1a; 一、A - B分两种情况&#xff1a; 当A>B ----> A - B&#xff1b;当A<B ----> -(B-A); 二、借位 t 的情况&#xff1a; t > 0 : 说明t不需要借位t < 0 : 说明 需要 t10 去补 AC代码如下&#xff1a; #in…

新建react项目,react-router-dom配置路由,引入antd

提示&#xff1a;reactrouter6.4版本&#xff0c;与reactrouter5.0的版本用法有区别&#xff0c;互不兼容需注意 文章目录 前言一、创建项目二、新建文件并引入react-router-dom、antd三、配置路由跳转四、效果五、遇到的问题六、参考文档总结 前言 需求&#xff1a;新建react项…

uniapp瀑布流实现

1. 图片瀑布流&#xff1a; 不依赖任何插件&#xff0c;复制即可见效&#xff1a; <template><view class"page"><view class"left" ref"left"><image class"image" v-for"(item,i) in leftList" :k…

使用Spring AOP做接口权限校验和日志记录

文章目录 一、AOP 介绍1.1 AOP 应用场景1.2 AOP 中的注解 二、权限校验2.1 定义权限注解2.2 定义切面类2.3 权限验证服务2.4 织入切点2.5 测试 三、日志记录3.1 日志切面类3.2 异常统一处理 四、AOP 底层原理4.1 todo 一、AOP 介绍 AOP&#xff1a; 翻译为面向切面编程&#x…

PMO和项目经理向老板提涨薪的成功秘籍有哪些?

一、PMO和项目经理向老板提涨薪的必备准备 作为PMO和项目经理&#xff0c;在向老板提涨薪之前&#xff0c;首先需要做好充分的准备。这不仅包括对自身工作的全面梳理&#xff0c;还需对公司目标、业务需求和市场环境有深刻的理解。了解公司目标意味着要清晰地了解公司对项目管…

ADC模数转换器

1. ADC模数转换器 ADC: 模数转换器 : 将模拟量转换为数字量 的 硬件设备 DAC: 数模转换器 : 将数字量转换为模拟量 1.1 工作原理 ADC: 工作原理 主要用于测量电压 1. 逐次逼近型CMOS: 结构一般 成本一般 转换一般 稳定性较低 即对精度要求不高,转换位数一般 成本低…

西瓜书学习笔记——层次聚类(公式推导+举例应用)

文章目录 算法介绍实验分析 算法介绍 层次聚类是一种将数据集划分为层次结构的聚类方法。它主要有两种策略&#xff1a;自底向上和自顶向下。 其中AGNES算法是一种自底向上聚类算法&#xff0c;用于将数据集划分为层次结构的聚类。算法的基本思想是从每个数据点开始&#xff0…

vue+elmentUI解决前端页面时间显示为一串数字

在该属性上添加注解 JsonFormat(pattern "yyyy-MM-dd HH:mm:ss") private Date createTime; 导入包 import com.fasterxml.jackson.annotation.JsonFormat; 效果

Python tkinter (12) —— Treeview控件

本文主要是Python tkinter Treeview控件介绍及使用简单示例。 tkinter系列文章 python tkinter窗口简单实现 Python tkinter (1) —— Label标签 Python tkinter (2) —— Button标签 Python tkinter (3) —— Entry标签 Python tkinter (4) —— Text控件 Python tkinte…

【Docker Registry】docker 镜像仓库实战

Docker Registry 镜像仓库 (Docker Registry) 负责存储、管理和分发镜像&#xff0c;并且提供了登录认证能力&#xff0c;建立了仓库的索引。 镜像仓库管理多个 Repository&#xff0c; Repository 通过命名来区分。每个 Repository 包含一个或多个镜像&#xff0c;镜像通过镜…

如何使用Python+Flask搭建本地Web站点并结合内网穿透公网访问?

文章目录 前言1. 安装部署Flask并制作SayHello问答界面2. 安装Cpolar内网穿透3. 配置Flask的问答界面公网访问地址4. 公网远程访问Flask的问答界面 前言 Flask是一个Python编写的Web微框架&#xff0c;让我们可以使用Python语言快速实现一个网站或Web服务&#xff0c;本期教程…

【Docker】docker安装jenkins

一、执行命令 下载jenkins镜像 #下载jenkins 镜像 docker pull jenkins/jenkins:latest-jdk8 启动jenkins容器 #启动jenkins 容器 #挂载 如果不挂载 每次启动jenkins的配置、插件、用户等信息都没有了 #jenkins_home 包含jenkins配置、插件、用户等信息。 要指定必须配置用…

【日志框架】

日志打印 建议用{}占位而不是字符串拼接打日志前先判断日志级别是否可用&#xff1a; 先根据等级过滤规则再决定写不写&#xff1b;先往一个管道写了内容&#xff0c;但再经等级过滤丢弃&#xff0c;徒增开销。 日志框架 Slf4J Slf4J 不是底层日志框架&#xff0c;只是门面…

STL_list

一、有关list的介绍 list是可以在常数范围内在任意位置进行插入和删除的序列式容器&#xff0c;并且该容器可以前后双向迭代list的底层是双向链表结构&#xff0c;双向链表中每个元素存储在互不相关的独立节点中&#xff0c;在节点中通过指针指向其前一个元素和后一个元素。Ii…

elasticsearch8.x版本docker部署说明和集成springboot

前提&#xff0c;当前部署没有涉及证书和https访问 1、环境说明,我采用三个节点&#xff0c;每个节点启动两个es&#xff0c;用端口区分 主机角色ip和端口服务器Amaster192.168.2.223:9200服务器Adata192.168.2.223:9201服务器Bdata,master192.168.2.224:9200服务器Bdata192.1…

Nodejs基础5之网络基础概念的IP、端口,HTTP模块的创建HTTP服务、HTTP服务注意事项、浏览器查看HTTP报文

Nodejs基础 网络基础概念IPIP的介绍IP的作用IP的分类共享IP-公网家庭共享——局域网公网 本地回环IP地址总结 IP标准分类 端口端口举例端口介绍总结 HTTP模块创建HTTP服务HTTP服务注意事项浏览器查看HTTP报文查看请求报文查看请求体url当中的查询字符串查看响应报文 网络基础概…