springsecurity工作流程

news2025/1/21 8:55:12

Spring Security 的工作流程如下:

在这里插入图片描述

1.当用户请求一个受保护的资源时,Spring Security 的过滤器链会拦截该请求。

2.然后 Spring Security 会判断该请求是否认证(authenticated)和授权(authorized)。

  • 认证(Authentication):验证用户身份,判断用户是否能登录系统。Spring Security 支持多种认证方式,如 LDAP、Form 登录等。
  • 授权(Authorization):验证用户是否有权限访问某个资源。Spring Security 基于角色(Role)和权限(Permission)进行授权。

3.如果请求未认证,Spring Security 会将用户重定向到登录页面。用户登录后,Spring Security 会将用户信息存储于 SecurityContext 中。

4.如果请求已认证但未授权,Spring Security 会返回 403 禁止访问响应。

5.如果请求已认证且已授权,过滤链会放行请求,调用链继续正常执行。

6.在过滤链的最后,Spring Security 还有一个 Filter 来清理 SecurityContext。这样可以确保安全地结束会话。

具体流程:

1.用户访问首页,不需要认证,可以正常访问。

2.用户点击登录链接,进入登录页登录。

  • 登录请求被 Spring Security 的 Filters 链拦截。
  • 调用 AuthenticationManager 进行认证,成功后将用户信息存储到 SecurityContext。
  • 重定向到首页。

3.用户访问需要权限的页面,请求被拦截。

  • 检查当前请求是否已认证(从 SecurityContext 获取用户信息)。
  • 如果已认证,检查当前用户是否有访问权限(调用 AccessDecisionManager)。
  • 如果有权限,放行请求,继续调用链。
  • 如果无权限,返回 403 响应。

4.用户退出,清空 SecurityContext。

  • 点击退出链接,Spring Security 清空 SecurityContext。
  • 重定向到首页。

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

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

相关文章

Linux应用编程(线程同步)(互斥锁)

对于一个单线程进程来说,它不需要处理线程同步的问题,所以线程同步是在多线程环境下可能需要注意的一个问题。线程的主要优势在于,资源的共享性,譬如通过全局变量来实现信息共享,不过这种便捷的共享是有代价的&#xf…

docker网桥冲突解决方法

Docker网桥网段冲突导致访问不到容器问题 三种情况 一、docker0所用网段与局域网所用网段相同,导致网桥冲突,这会造成冲突网段无法访问docker服务。 解决办法: 1.停止docker,删除冲突网桥 systemctl stop docker ip link del doc…

干货 | 中科院心理所考研复试经验分享

Hello,大家好! 这里是壹脑云科研圈,我是喵君姐姐~ 此时此刻,23年考研的小伙伴估计正在为复试进行准备吧,大家都准备得怎么样了呢? 今天为大家带来的就是我国顶级心理学研究结构—中科院心理所…

leetcode19_删除链表的倒数第 N 个结点

文章目录 题目详情分析Java代码实现 题目详情 leetcode19 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 分析 暴力的方法,两趟遍历,第一个遍历记录总的节点数目,第二次遍历到总结点数-N个位置&…

PyTorch——利用Accelerate轻松控制多个CPU/GPU/TPU加速计算

PyTorch——利用Accelerate轻松控制多个CPU/GPU/TPU加速计算 前言官方示例控制多个CPU/GPU/TPU简单说一下设备环境导包加载数据 FashionMNIST创建一个简单的CNN模型训练函数-只包含训练训练函数-包含训练和验证训练 参考链接 前言 CPU?GPU?TPU&#xff…

边学边记——数据结构☞关于对象的比较(包括对equals()方法的重写,Comparable接口,Comparator接口的介绍)

目录 一、基本类型 二、引用类型——对象的比较 1. 关于同一性的比较 2. 关于相等性的比较 三、Comparable接口 1. 介绍 2. 实现 3. 什么叫做正确的compareTo方法的重写 四、实现Comparator接口(基于比较器比较) 1. 介绍 2. 实现 3. 使用场景…

CentOS防火墙的常用快捷命令

CentOS是免费开源的Linux发行版之一,它兼容RHEL并由社区进行维护,大多数美国服务器提供对该系统支持。在使用CentOS系统时,您需要了解一些常用命令,比如开启、查看、关闭防火墙等。本文将介绍下CentOS防火墙的常用命令。 CentOS是一种面向企业级服务器环境的Linux发行版,…

D触发器仿真实验

关于D触发器的内容见专栏的单片机原理及应用,主要是时钟脉冲出现时候,会改变输出状态。 下面来做一个D触发器的仿真实验。 部件 使用74LS74:带清除和预置端功能的双上升沿D型触发器 74LS74是一款现代集成电路芯片,属于TTL&…

火爆全网,测试用例技巧-Python实现XMind测试用例转Excel测试用例

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 自动化测试&#x…

Jenkins中Changelog插件使用

Jenkins中Changelog插件使用 通过changlog插件获取每次提交的变更信息 一、安装changelog插件 二、使用changelog 1、新建项目,在构建环境中勾选Add Changelog Information to Environment ,输入对应的格式 %3$s(datetime-at%4$s via%1$s) %2$s(type%…

聚焦智慧燃气,美格智能亮相第25届中国国际燃气、供热技术与设备展览会

4月25~27日,第25届中国国际燃气、供热技术与设备展览会在深圳会展中心(福田)盛大举办。本次展会由中国城市燃气协会主办,自1994年举办以来已历经24届,是国内燃气行业规模巨大的综合性专业展会。美格智能携4G/5G模组、N…

Typora中的数学公式(MarkDown)

Typora中的数学公式(MarkDown) 添加数学公式方式: 1.选择:段落>公式 2.快捷键:Ctrl Shift M 3.直接输入两个美元符号并回车 展示: 空格:一个斜线\ : a \ b a b a \ b a b 换行&#x…

【河南省第二届技能大赛-物联网技术】C模块Python开发讲解

文章目录 前言题目如下什么是云平台APIAPI调用的基本流程Python实例介绍依赖库介绍API调用的基本参数请求返回值requests库PyQt5库总结源码链接 前言 这是基于样题进行讲解的文章,因为正式赛题尚未公布和样题类型相似。文章结尾提供了源码和环境链接,读…

四面阿里,成功入职阿里测试开发,分享我的真实面试题

闲话少叙 直接上干货 鉴于篇幅所限,这里不放答案,有需要的朋友可以评论区自取 1. 请自我介绍一下(需简单清楚的表述自已的基本情况,在这过程中要展现出自信,对工作有激情,上进,好学) 2. 平时工作中是怎么去…

【面试题】你都必须得掌握的vue知识

大厂面试题分享 面试题库 前后端面试题库 (面试必备) 推荐:★★★★★ 地址:前端面试题库 web前端面试题库 VS java后端面试题库大全 前言 大家好,我是前端贰货道士。最近抽空整理了下我对vue2.x的理解和认知&#…

设计师常用的素材网站有哪个推荐

即时设计资源社区聚集了许多优秀的创作者,分享了大量的优质资源。 目前,社区资源数量已达到10000,包含图标、插画、原型、设计作品等多个素材类别。这些优秀的设计作品降低了设计师思维的成本,成为设计师的宝藏材料网站。 即时设…

ML@sklearn@ML流程Part2@数据划分@KFold折叠交叉验证

文章目录 MLsklearnML流程Part2数据划分KFold折叠交叉验证Model evaluation数据划分sklearn中的模型评估demo K-fold cross-validation🎈K-foldegegeg:KFoldK-fold cross-validation ShuffleSpliteg 小结 Stratified Shuffle Splitegeg demo MLsklearnML流程Part2数…

代码随想录算法训练营第四十四天|完全背包理论基础 、518. 零钱兑换 II 、377. 组合总和 Ⅳ

文章目录 完全背包理论基础518. 零钱兑换 II377. 组合总和 Ⅳ 完全背包理论基础 纯背包问题的特点:每个物品可以无限次拿 与0-1背包唯一不同: 完全背包的物品是可以添加多次的,所以要从小到大去遍历 0-1背包不可以添加多次,需要从…

【C++】类和对象(上篇)

类和对象 面向过程和面向对象初步认识类的引入类的定义命名规范类的访问限定符及封装访问限定符封装 类的作用域类的实例化类的对象大小的计算类成员函数的this指针this指针的引出this指针的特性 面向过程和面向对象初步认识 C语言是面向过程的,关注的是过程&#…

RocketMQ-Producer

消息生产者的代码都在client模块中,相对于RocketMQ来讲,消息生产者就是客户端,也是消息的提供者。 启动流程 代码:DefaultMQProducerImpl#start public void start(final boolean startFactory) throws MQClientException {switc…