一.SpringSecurity基础-认证和授权概述

简介: SpringSecurity基础-认证和授权概述

1.认证授权概述

为了给学习SpringSecurity打下基础,我们来回顾一下传统的认证授权流程

1.1.什么是认证

认证是对主体/用户身份的确认,在我们的生活中随处可见认证场景,如:小区门禁卡,人脸识别,指纹识别等都是对用户身份的确认,在传统的应用中我们通常使用用户名/用户ID和密码来进行用户的身份确认,即登录,但登录的方式不仅限制于用户名/密码的方式,认证是我们应用的第一道安全门,所以对于整个系统的安全来说显得极其重要。

1.2.什么是授权

控制不同的用户访问不同的权限 ,用户认证成功后,就可以对某些资源进行访问,但是不同的用户有不同的资源访问权利,那么对用户的授权也都不一样。如:公司老板拥有对公司的所有权限,而部门主管只能有对自己管理的部门的权限,所以在程序中授权的过程就是赋予不同用户不同权限的过程。

1.3.什么是RBAC

RBAC是基于角色的访问控制(Role-Based Access Control )在 RBAC 中,权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限。这就极大地简化了权限的管理。这样管理都是层级相互依赖的,权限赋予给角色,而把角色又赋予用户,这样的权限设计很清楚,管理起来很方便。

举例:可以把部门的展示,添加,修改,删除等资源或功能打包成角色“部门管理”,然后把“部门管理”这个角色赋予某个用户,那么这个用户就是部门管理员,拥有部门的相关权限。

RBAC 认为授权实际上是Who 、What 、How 三元组之间的关系,也就是Who 对What 进行How 的操作。

  • 主体(Who ) :是权限的拥有者或主体(如:User,Role)。
  • 资源 (what): 是操作或对象,如:页面,菜单,按钮,控制器(controller,hanler)等
  • 权限(how) :具体的权限, 如:张三可以删除员工。 那么删除员工就是一个权限

    2.基于session的认证授权

2.1.认证流程

基于Session的认证方案即当用户认证成功之后将认证信息缓存在session中,主体(用户)在发起资源访问时需要进行是否做过认证校验,即检查session中是否有缓存认证信息。详细的认证流程如下图:

认证流程

image.png

  1. 客户端(浏览器)提交用户名和密码发起认证请求
  2. 请求中的认证信息被封装成对象(User),控制层(controller)接收到认证请求
  3. Controller调用服务层(Service)的认证逻辑进行认证,传入User
  4. Service调用持久层(Dao)根据传入的User中的账号查询数据库中的认证信息(User)
  5. Service获取到持久层返回的User和请求传入的User进行密码比对
  6. 认证成功将认证信息(User)和用户的权限信息通过UserContext存储到(Session中)
  7. 返回认证结果给客户端
认证检查

image.png

当用户再次发起请求,拦截器会负责检查是否已经完成认证,通过UserContext从Session中获取User对象进行判断,如果没认证就会返回错误信息,如果已经完成认证就直接访问url对应的资源,返回资源给客户端。

2.2.授权流程

授权是约束用户对资源的访问权限,通过系统事先需要对资源做好授权操作,即约定好哪些资源需要什么样的权限才能访问。并且平台的用户需要被分配好其拥有的权限(用户/角色/权限) , 在用户认证成功之后即为用户加载其拥有的权限列表和认证信息一起封装成对象缓存到session中 ,当用户发起资源请求时,除了需要做认证检查还需要做权限检查,即判断当前认证用户所拥有的权限列表中是否拥有当前访问的资源所需要的权限。详细授权流程如下如:

image.png

  1. 认证通过,加载当前用户的权限列表,和认证信息一起封装成对象存储到session中
  2. 服务端登录检查拦截器,校验是否已经认证(从session获取认证信息)
  3. 服务端权限检查拦截器,校验是否拥有访问权限(用户的权限列表是否包含资源所需要的权限)
相关文章
|
7月前
|
SQL 关系型数据库 数据库
【数据库】多表关系与多表查询-全维度对比(附《思维导图》)
本文系统讲解多表关系与多表查询,涵盖底层原理、范式设计、JOIN/UNION/子查询语法、CTE递归、性能优化及高频避坑指南,适配MySQL/PostgreSQL,助你从入门直达企业级实战。
|
8月前
|
机器学习/深度学习 数据采集 人工智能
指令微调是什么:让大模型听懂人话的关键技术
指令微调(Instruction Tuning)是提升大模型“听懂人话”能力的关键技术:通过高质量指令-响应对训练,使模型从“会说话”进阶为“懂意图、会回应”,显著增强零样本泛化、任务适应与安全性,已成为大模型落地的必备环节。
|
7月前
|
JSON 监控 测试技术
微服务接口设计全解:RESTful/RPC 规范、兼容方案与生产级实战
本文系统阐述微服务接口设计规范,涵盖RESTful与RPC两大体系:明确接口作为行为契约的本质,提出语义清晰、兼容稳定、高性能等五大设计目标;详解URI设计、HTTP方法/状态码、请求响应体等RESTful规范,并给出完整代码实例;解析RPC的契约优先、幂等性、序列化等核心要求;对比二者差异,提供选型指南与灰度发布、多版本共存等生产级兼容方案,助力构建高可靠微服务架构。
860 5
|
6月前
|
JavaScript 前端开发 API
前端组件库——Element Plus知识点大全(一)
教程来源 https://tmywi.cn/category/lvxing.html Element Plus是饿了么团队打造的Vue 3官方UI库,深度集成TypeScript与Composition API,提供70+企业级组件、完善设计规范及主题定制能力。GitHub星标超2.5万,国内Vue 3中后台开发首选方案。
|
7月前
|
JSON 安全 算法
如何安全使用 JWT 作为访问凭证
本文深入解析JWT安全使用规范,涵盖核心概念、六步验证清单(签名、时效、签发者、受众等)、算法混淆等真实漏洞案例,并给出六大实践建议:硬编码算法白名单、严验所有声明、短生命周期令牌、过滤kid注入、选用可信库、遵循RFC 9068标准,助开发者筑牢API安全防线。(239字)
1071 0
|
监控 Java API
Spring Boot 3.2 结合 Spring Cloud 微服务架构实操指南 现代分布式应用系统构建实战教程
Spring Boot 3.2 + Spring Cloud 2023.0 微服务架构实践摘要 本文基于Spring Boot 3.2.5和Spring Cloud 2023.0.1最新稳定版本,演示现代微服务架构的构建过程。主要内容包括: 技术栈选择:采用Spring Cloud Netflix Eureka 4.1.0作为服务注册中心,Resilience4j 2.1.0替代Hystrix实现熔断机制,配合OpenFeign和Gateway等组件。 核心实操步骤: 搭建Eureka注册中心服务 构建商品
1667 3
|
9月前
|
人工智能 运维 监控
智能体来了·智创未来:AI 智能体成为数字时代的新型基础设施
AI智能体正从单点工具升级为可持续运行的平台型基础设施,具备通用认知、自主执行与协同扩展能力,可复用嵌入各类业务系统。它正成为数字经济底座,推动AI从项目制应用迈向普惠化、系统化能力供给。(239字)
292 2
|
9月前
|
前端开发 API 数据库
大模型应用进阶指南(二):打造具备自主工具使用能力的智能推理链
大模型正从对话迈向行动,核心是工具调用(Function Calling)。开发者向模型注册工具函数后,模型能根据问题智能选择并调用,附上正确参数,并将执行结果转化为最终答案。相比ReAct提示工程,工具调用更聚焦于明确的函数接口,适合API调用等场景,开发相对简便。它标志着大模型从“认知”走向“行动”,成为解决实际问题的关键。
|
10月前
|
前端开发 NoSQL 数据库
ruoyi 单体版本
简介:从Gitee拉取RuoYi-Vue项目,按文档完成环境搭建。导入数据库并修改配置,启动Redis与后端服务,前端安装Node依赖并运行。实现导出命名修改、当前页排序、筛选条件添加及公告批量导入四大功能,24小时内完成并提交成果。
|
机器学习/深度学习 测试技术 API
1分钟读完100万字,Qwen2.5-Turbo上线长文本
1分钟读完100万字,Qwen2.5-Turbo上线长文本

热门文章

最新文章