肝!熬夜到天明,阿里顶配级 Spring Security 笔记

news2024/11/17 17:50:19

Spring Security

Spring Security 是一个能够为基于 Spring 的企业应用系统提供声明式的安全访问控制解决方案的安全框架。由于它是 Spring 生态系统中的一员,因此它伴随着整个 Spring 生态系统不断修正、升级,在 spring boot 项目中加入 springsecurity 更是十分简单,使用 Spring Security 减少了为企业系统安全控制编写大量重复代码的工作。

Spring Security OAuth2.0 认证授权

进入移动互联网时代,大家每天都在刷手机,常用的软件有微信、支付宝、头条等,下边拿微信来举例子说明认证

相关的基本概念,在初次使用微信前需要注册成为微信用户,然后输入账号和密码即可登录微信,输入账号和密码登录微信的过程就是认证。

认证 :用户认证就是判断一个用户的身份是否合法的过程,用户去访问系统资源时系统要求验证用户的身份信息,身份合法方可继续访问,不合法则拒绝访问。常见的用户身份认证方式有:用户名密码登录,二维码登录,手机短信登录,指纹认证等方式。

OAuth(开放授权)是一个开放标准,允许用户授权第三方移动应用访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方移动应用或分享他们数据的所有内容,OAuth2.0 是 OAuth 协议的延续版本,但不兼容 OAuth 1.0(即完全废止了 OAuth1.0)。OAuth 2.0 规范定义了一个授权(delegation)协议。

目前学习 Spring Security 方面的资料相对来说比较并且并不完善,于是乎你的小编(雷锋)整理出这份笔记,分两套环境全面的讲解 Spring Security 框架。首先,SSM 环境中我们通过 xml 配置的方式,从源码渗入开始,完成 Spring Security 基本的“认证”和“授权”功能讲解,其中还会融合“记住我”,CSRF 拦截等技术。然后,会在 SpringBoot 环境中,继续展开 Spring Security 更深度的学习,这时的认证,也会转化成分布式方式。【Spring Security 笔记原文档见文末

第一份笔记:Spring Security OAuth2.0 认证授权

1.基本概念

  • 什么是认证

  • 什么是会话

  • 什么是授权

  • 授权的数据模型

  • RBAC

2.基于 Session 的认证方式

  • 认证流程

  • 创建工程

  • 实现认证功能

  • 实现会话功能

  • 实现授权功能

3.Spring Security 快速上手

  • Spring Security 介绍

  • 创建工程

  • 认证

  • 授权

4.Spring Security 应用详解

  • 集成 SpringBoot

  • 工作原理

  • 自定义认证

  • 会话

  • 退出

  • 授权

5.分布式系统认证方案

  • 什么是分布式系统

  • 分布式认证需求

  • 分布式认证方案

6.OAuth2.0

  • OAuth2.0 介绍

  • Sping Cloud Security OAuth2

  • JWT 令牌

  • 完善环境配置

7.Spring Security 实现分布式系统授权

  • 需求分析

  • 注册中心

  • 网关

  • 转发明文 token 给微服务

  • 微服务用户鉴权拦截

  • 集成测试

  • 扩展用户信息.

第二份:企业开发首选的安全框架 Spring Security 笔记

第二部分:初识 Spring Security

  • 1.权限相关概念介绍

  • 2.引入认证和授权概念

  • 3.Springsecurity 介绍

  • 4.这里有十一个过滤器原理说明

  • 5.数据库环境准备

  • 6.数据库使用 mysql,这里完成用户,角色,权限三张表准备。

  • 7.独立 web 工程 springsecurity 权限控制案例技术选型说明

  • 8.springmvc+spring+mybatis+jsp+adminLTE

  • 9.springsecurity 认证功能实现

  • 10.这时的认证,还未真正从数据库中获取角色信息。

第二部分:Spring Security 授权操作

  • 11.实现用户管理角色查询功能

  • 12.为授权做准备

  • 13.实现用户角色的修改功能

  • 14.可增添可删减用户的角色

  • 15.在 jsp 页面上采用 springsecurity 动态标签控制菜单的显示或隐藏

  • 16.Springsecurity 在独立 web 工程中使用,其实并未用到权限表,就是说菜单并没有入库,直接全部写死在页面上,使用 springsecurity 动态标签控制显示或隐藏。

  • 17.在后台使用注解真正控制用户对资源的访问权限

  • 18.这里会使用 jsr250,springEL,springsecurity 三类注解来演示

  • 19.403 异常的处理

  • 20.用三种方式来处理 403 异常的拦截

第三部分:SpringSecurity 整合 SpringBoot 集中式版

  • 21.Swagger 制作 restfulAPI 介绍

  • 22.既然要使用前后端分离的方式,怎么能少了 API?

  • 23.将后台所有返回页面的处理器改成返回数据的处理器

  • 24.都前后端分离了,再返回页面还有什么意义?

  • 25.说明前后端分离后项目中认证的问题

  • 26.这时的页面和后台在不同的服务器中,所以会存在 session 不能共享的问题。

  • 27.介绍 JWT

  • 28.说明 JWT 的功能和作用

  • 29.Springsecurity 整合 JWT

  • 30.通过 springsecurity 加 JWT 的方式来实现前后端分离的认证

第四部分:OAuth2.0 实战案例

  • 31.将所有页面换成 vue

  • 32.前后端分离 jsp 自然就不能再用了

  • 33.创建权限表并将所有菜单入库

  • 34.之前独立一个 web 工程的时候,菜单是直接写死在页面上并没有入库的,而前后端分离后 springsecurity 的动态标签无法使用了。

  • 35.完成角色管理权限查询功能

  • 36.为动态展示菜单做准备。

  • 37.完成修改角色下菜单的功能

  • 38.还是为动态展示菜单做准备

  • 39.介绍 element-ui 的使用

  • 40.页面展示菜单技术准备

  • 41.认证通过后在页面上动态展示菜单

  • 42.使用 element-ui 完成动态菜单的展示。

【Spring Security 笔记原文档👇

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

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

相关文章

Ubuntu下安装Miniconda

下载 到根据自己本地python版本到官网下载 https://docs.conda.io/en/latest/miniconda.html#linux-installers 我本地是python3.8 然后上传到Ubuntu服务器上,或者直接使用wget下载: wget https://repo.anaconda.com/miniconda/Miniconda3-py38_23.5…

WebSocket理论和实战

一 WebSocket理论 1.1 什么是http请求 http链接分为短链接、长链接,短链接是每次请求都要三次握手才能发送自己的信息。即每一个request对应一个response。长链接是在一定的期限内保持链接(但是是单向的,只能从客户端向服务端发消息&#x…

单例模式、指令重排序、锁、有序性

今天在回顾单例模式时,我们都知道懒汉式单例中有一种叫做双重检查锁的单例模式。 我们来看下下面的代码有没有问题: 这段代码我们可以看到,即优化了性能,在多线程情况下,如果实例不为空了,则直接返回了。…

1766_perl实现readlines功能

全部学习汇总: GreyZhang/perl_basic: some perl basic learning notes. (github.com) 近段时间写一个Perl程序,中间反反复复用到了文件的读写。虽说是用Perl的基本功能实现读写非常简单,但是写的过程中我不止一次在想Python以及MATLAB的功能…

华为OD机试真题 Java 实现【评论转换输出】【2023 B卷 100分】,附详细解题思路

目录 专栏导读一、题目描述在这里插入图片描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出 华为OD机试 2023B卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(A…

什么是元学习?外循环和内循环?支持集和查询集?

一、前言 元学习近几年也算是一个比较热门的研究方向,大部分被用来解决低资源少样本零样本学习的任务场景中。 那么为什么元学习可以提升低资源少样本的学习效果呢?活着说元学习到底是一个什么阳的算法呢? 这里做一个简单的概念阐述。元学…

echart之map地图图表使用教程

本文以echarts展示成都地图为例子。 echarts map (echarts地图)使用教程 效果展示准备阶段获取地图geojson数据安装echarts 开始绘制容器准备js代码 补充事项vue3.0 用ref定义echarts报错toRaw、markRaw 扩展 地图隐藏南海诸岛地图显示提示框地图实现下钻…

Vue项目的启动

前言: 由于最近开始实习,负责人上来就给我丢一个前端vue项目和后端文件,让我在本机完成部署,由于之前学的基本上都是后端相关知识,很少有了解到前端的东西,因此在这里将自己部署Vue项目时遇到的问题和解决过…

编译libtiff库给IOS平台用

打开libtiff官方网 : libtiff / libtiff GitLab 克隆: git clone --recursive https://gitlab.com/libtiff/libtiff.git 克隆成功并打开libtiff目录,发现有autogen.sh 与CMakeLists.txt所以可生成Configure程序来配置并编译,也可直接使用CMake-GUI来配置编译,选择其中一种 …

远程会诊如何实现?

比如:医生遇到复杂病情需要求助院外专家远程会诊过程中,需要将电脑中的病人资料给院外专家看,同时确保医院电脑和网络系统绝对安全,电脑不允许安装任何外部软件,不能被外人控制和操作,外部设备不能接入医院…

【Java技术专题】「攻破技术盲区」带你攻破你很可能存在的Java技术盲点之技术功底指南(鲜为人知的技术)

带你攻破你很可能存在的Java技术盲点之技术功底指南 基本类型的包装类技术盲点:基本类型的比较技术盲点:字符串内部化(string interning)字符串内部化的示例 技术盲点:类型缓存机制(空间换时间)…

微信小程序border-radius不圆滑

border-radius可以设置:百分比或者像素值 1.使用像素值比较圆滑 2.使用百分比不够圆滑

习题1.25

对吗?实践出真知,运行看看。代码如下。 (defn square [x] (* x x))(defn fast-expt[b n](println "call iter" n)(cond (= 1 n) b(= 2 n) (square b)(even? n) (square (fast-expt b (/ n 2))):else (* b (fast-expt b (- n 1)))))(defn expmod [base exp m](mod…

pytest 结合logging输出日志保存至文件

API_log.py import loggingclass loger():def logering(self):# 创建logger对象logger logging.getLogger(test_logger)# 设置日志等级logger.setLevel(logging.DEBUG)# 追加写入文件a ,设置utf-8编码防止中文写入乱码test_log logging.FileHandler(test.log, a,…

Java:基于JDBC数据连接池方式同步第三方数据库表信息数据

前言 最近遇到一个需求就是要拉取第三方的数据信息,但是第三方那边又没有对外暴露对接接口,只给出了具体的数据库连接信息和具体表信息基于第三方给出的有效信息,我采取了用 JDBC 传统的方式去进行数据拉取注意:前置条件两端的网…

收费站对讲广播系统方案

收费站对讲广播系统方案 收费站对讲广播系统是一种用于收费站内部通信和广播传输的系统。它能够实现不同收费站点之间的语音通信和广播,以便快速、准确地传达信息和指令。该系统通常由以下几个核心组件组成:1. 主控台:主控台是系统的中心控制…

cocos shader在编辑器正常,浏览器上不显示

问题出在需要将图片的package属性取消勾选。如果用的单色精灵,那么可以将系统的白色图片复制一份再取消勾选。 相关链接: shader在浏览器上不显示 - Creator 2.x - Cocos中文社区

Redis高级篇(一)

分布式缓存 -- 基于Redis集群解决单机Redis存在的问题 单机的Redis存在四大问题: 1.Redis持久化 Redis有两种持久化方案:RDB持久化、AOF持久化 1.1.RDB持久化 什么是RDB持久化 RDB全称Redis Database Backup file(Redis数据备份文件&am…

第一章 JavaScript --下

第一章 JavaScript --下 2.5.6 DOM操作 由于实际开发时基本上都是使用JavaScript的各种框架来操作,而框架中的操作方式和我们现在看到的原生操作完全不同,所以下面罗列的API仅供参考,不做要求。 2.5.6.1 在整个文档范围内查询元素节点 功…

XUbuntu22.04之vim无法复制内容到系统(一百八十四)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…