Spring Security3.0.1版本

前言:

抽象Spring Security3.0上一篇

在上一篇中,我们完成了对Security导入,快速入门,和对自动配置的简单验证

对登录流程的分析和Security基本原理

补充:

先解决上一篇留下的问题,端口和端点的区别

端点的英文是end-point

端口的英文是port

在官方文档中,任何端点官方定义,点进去后↓

                                                                         大标题叫授权 HttpServletRequest

端点的定义问题就解决了,我们采用官方对端点的定义是HttpServletRequest

端点是个名,它的核心所描述的是HttpServletRequest,一种标准下请求路径

端口所描述的是什么呢?

上一篇说过用bug补充定义

这期解释下怎么用bug补充,而不是单单看bug

首先这个bug需要可以复刻,不能复刻你连怎么发生的都不知道

其次就是日志内容,idea里的日志和浏览器F12的网路配置要会看

还记得我们是怎么找到端口的吗?

拜托,你肯定早忘了,所以下面的内容是让你回忆起如何找到端口,并通过端口进入Security官方提供的登录页面

第一步,启动项目

第二步,查看日志,找到端口的英文单词

这两个日志对应的内容是一样的

然后我们用这个端口去访问Security的页面

127.0.0.1:8084(port)  /  localhost:8084(port)

第一步,随便打开一个浏览器

第二步,输入127.0.0.1:8084(port)  /  localhost:8084(port) 其中一个

ps:确保你的项目是启动的

它会自动跳转到login端点

试试看, 把port删掉,再运行

回车

哦!

拒绝访问了,再加上它port,注意是冒号:后面跟port

这个东西有它可以访问端点,没有它不能访问端点,这个像什么呢?

钥匙~

不知道你们有没有玩过这种游戏,就是那种可以选节点然后触发不同剧情的游戏

开局,就是我们使用端口进入游戏,后面的每个节点步骤就是端点

几乎所有游戏都可能这么去理解,开启客户端调用端口,选择模式选用端点

想更进一步了解的可以看看这篇文章访问百度的过程详解_访问百度网站查询资料时,计算机网络经过了哪些步骤来获取资料?-CSDN博客

总结:端点与端口是钥匙和门的关系

正片:

到了这里Security官方的入门已经完成了,进入下一页,才怪

@EnableWebSecurity 
@Configuration
public class DefaultSecurityConfig {
    @Bean
    @ConditionalOnMissingBean(UserDetailsService.class)
    InMemoryUserDetailsManager inMemoryUserDetailsManager() { 
        String generatedPassword = // ...;
        return new InMemoryUserDetailsManager(User.withUsername("user")
                .password(generatedPassword).roles("ROLE_USER").build());
    }

    @Bean
    @ConditionalOnMissingBean(AuthenticationEventPublisher.class)
    DefaultAuthenticationEventPublisher defaultAuthenticationEventPublisher(ApplicationEventPublisher delegate) { 
        return new DefaultAuthenticationEventPublisher(delegate);
    }
}

这串代码还没看呢。。。

Spring Boot Security Auto Configuration

Spring Boot安全自动配置  - - - - -   这个是官方的小标题

配置的内容是什么?对应上面的那一大坨Hello Spring Security :: Spring Security Reference (springdoc.cn)官方文档

好了,现在才是真正意义上完成了第二步(了解Security的自动配置)

第三步(认识架构)

第一步,还是打开官方文档

架构 :: Spring Security Reference (springdoc.cn)

第二步,看大标题

架构

第三步,开始看内容

本节讨论了 Spring Security 在基于 Servlet 的应用程序中的高级架构。我们在参考资料中的 认证(Authentication)、授权(Authorization) 和 防止漏洞 部分建立了这种高层次的理解。

这段话的核心只有一个,Spring Security 在基于Servlet(Java Web)的应用程序中的高级架构。只要看懂了这句话,整篇的文章易如反掌

先拆分:

原文:This section discusses Spring Security’s high-level architecture within Servlet based applications

Spring Security

Service应用程序

高级架构

将他们在组合一次

Spring Security基于Service应用程序高级架构

这个翻译一点都不信达雅(吐槽)

This section discusses Spring Security’s high-level architecture within Servlet based applications

看看原文,我们来一下离谱的中文翻译版本

本节将讨论 Spring Security高层架构 基于 Servlet 的应用程序

这些就没那么绕了,把上面的图片更新一下

奥~原来这句话的核心只有一个,那就是Z高级架构(high-level architecture

所谓的Spring Security,Servlet 的应用程序 只不过是对高层架构的形容,障眼法

high-level architecture  高层架构,哇哦~

单看中文好简单!一点都不难~

拷贝啦,真的好难啊,又是高级架构又是高层架构,这他丫谁懂啊,家人们!

有时候真经只有寥寥几字但是却包含了全部内容,实际上high-level architecture这个词是一个计算机应用术语,是一个专有名词——高层体系结构才是它最贴近原文的翻译

高层体系结构(High Level Architecture,HLA)是从体系结构上建立这样一个框架,它能尽量涵盖M&S领域中所涉及的各种不同类型的仿真系统,并利于它们之间的互操作和重用。同时能适应不断发展中的新技术,来满足复杂大系统的仿真需要。对采用HLA体系结构的仿真系统,仿真系统的运行和仿真成员之间的交互和协调都是通过运行支撑系统RTI (Run Time Infrastructure)来实现的。 RTI的实现及其运行的性能好坏,是分布交互仿真系统实现的关键。

就这么一段,没错就这么一段,这么一看貌似更复杂了,方向选错路白走。

很显然这个描述需要有一定悟性,我悟性有点低,悟不出,所以换个方向,我们直接用他们的总结,如果您有水平,可以试着从这段句话分析出总结

HLA体系结构是一个开放的、支持面向对象的体系结构。它采用面向对象的方法学来分析系统,建立不同层次和粒度的对象模型,从而促进了仿真系统和仿真部件的重用。 HLA的关键组成部分是接口规范,它定义了在一个联邦演练中,支持联邦成员通过RTI实现成员之间相互交互、协调和协同作业的标准服务。它的最显著的特点就是通过提供通用的、相对独立支撑服务程序,将应用层同其底层支撑环境功能分离开,即将具体的仿真功能实现、仿真运行管理和底层传输三者分离开来,隐蔽了各自的实现细节,可以使各部分相对独立的开发,最大程度地利用各自领域的最新技术来实现标准的功能和服务,适应新技术的发展。同时,可实现应用系统的即插即用,易于新的仿真系统的集成和管理,并针对不同的用户需求和不同的应用目的,实现联邦快速、灵活的组合和重配置,保证了联邦范围内的互操作和重用。

RTI作为联邦执行的核心,其功能类似于某种特殊目的的分布式操作系统,跨计算机平台、操作系统和网络系统,为联邦成员提供运行所需的服务。 RTI提供六种服务,即联邦管理、声明管理、对象管理、所有权管理、时间管理和数据分布管理等服务。

哦↑乌↓

这段特点就清晰多了

HLA体系结构是一个开放的、支持面向对象的体系结构。

我们的Servlet 的应用程序就是一个体系结构,剩下的内容都在描述这个体系结构是怎么样的

HLA的关键组成部分是接口规范,它定义了在一个联邦演练中,支持联邦成员通过RTI实现成员之间相互交互、协调和协同作业的标准服务。

这样看太抽象了,换个方向

到了这里,站长感觉这个简介也不算难,还真可以通过简介退出结论

这期先到这里

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

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

相关文章

Javascript系统学习(三)

前端模块化前端模块化CommonJS、AMD、CMD、ES6_commonjs amd cmd es6模块化-CSDN博客 ES6: <script type"module" src"main.js"></script> //默认导出 export default function(ctx) {... } ----------------------------------- //模块命名…

每日题库:Huawe数通HCIA——全部【813道】

1.关于ARP报文的说法错误的是?单选 A.ARP报文不能被转发到其他广播域 B.ARP应答报文是单播方发送的 C.任何链路层协议都需要ARP协议辅助获取数据链路层标识 DARP请求报文是广播发送的 答案:C  解析: STP协议不需要ARP辅助 2.园区网络搭建时,使用以下哪种协议可以避免出现二层…

[AIGC] 详解Mockito - 简单易学的Java单元测试框架

在Java的世界中, 单元测试是一项非常重要的任务. Mockito作为一个强大灵活的mock框架&#xff0c;可以帮助我们有效的编写和管理我们的单元测试. 了解并掌握Mockito的使用对于提高我们的开发效率和保证我们的软件质量有着巨大的帮助. 文章目录 什么是Mockito?Mockito的核心API…

UE4_环境_材质函数

学习笔记&#xff0c;不喜勿喷&#xff0c;欢迎指正&#xff0c;侵权立删&#xff01; 1、建立材质函数Distance_Fun&#xff0c;勾选公开到库。 2、添加函数输入节点FunctionInput&#xff0c; 这个输入我们想作为混合材质属性BlendMaterialAttributes的alpha输入节点&#x…

苍穹外卖笔记-06-菜品管理-菜品分类,公共字段填充

菜品分类 1 菜品分类模块1.1 需求分析与设计1.1.1 产品原型1.1.2 接口设计1.1.3 表设计 1.3 代码实现1.4 测试分类分页查询启用禁用分类修改分类信息新增菜品分类删除菜品分类 2 公共字段自动填充2.1 问题分析2.2 实现思路自定义注解AutoFill自定义切面AutoFillAspectMapper接口…

C++ | Leetcode C++题解之第136题只出现一次的数字

题目&#xff1a; 题解&#xff1a; class Solution { public:int singleNumber(vector<int>& nums) {int ret 0;for (auto e: nums) ret ^ e;return ret;} };

如何在手机上恢复误删除的视频?

说到移动设备上的视频恢复&#xff0c;我们仍将揭开4种解决方案供您使用。希望它们对您的案件有所帮助。 众所周知&#xff0c;我们移动设备上的视频应用程序将创建一个缓存文件夹&#xff0c;以在它们永远消失之前临时存储已删除的项目。因此&#xff0c;有许多iPhone / Andr…

《系统架构设计师教程(第2版)》第11章-未来信息综合技术-02-人工智能技术概述

文章目录 1. 人工智能&#xff08;AI&#xff09;1.1 弱人工智能1.2 强人工智能 2. 人工智能的发展历程3. 人工智能关键技术31. 自然语言处理 (Natural Language Processing)3.2 计算机视觉 (Computer Vision)3.3 知识图谱 (Knowledge Graph)3.4 人机交互 (Human-Computer Inte…

2. keepalived结合LVS配合使用

keepalived结合LVS配合使用 1、后端nfs存储提供项目文件2、后端nfs上集中安装MySQL&#xff0c;共用数据库3、业务服务器通过LNMP正常部署wordpress博客&#xff0c;客户端通过DNS解析可正常访问4、所有业务服务器上修改arp参数、配置VIP5、配置keepalived实现LVS高可用5.1 kee…

来自工业界的知识库 RAG 服务(三),FinGLM 竞赛获奖项目详解

背景介绍 前面介绍过工业界的 RAG 服务 QAnything 和 RagFlow 的详细设计&#xff0c;也介绍过来自学术界的 一些优化手段。 前一阵子刚好看到智谱组织的一个金融大模型比赛 FinGLM&#xff0c;主要做就是 RAG 服务的竞赛&#xff0c;深入研究了其中的几个获奖作品&#xff…

docker安装rabbitmq详解

目录 1、安装 1-1.查看rabbitmq镜像 1-2.下载Rabbitmq的镜像 1-3.创建并运行rabbitmq容器 1-4.查看启动情况 1-5.启动web客户端 1-6.访问rabbitmq的客户端 2..遇到的问题 解决方法: 1、安装 1-1.查看rabbitmq镜像 docker search rabbitmq 1-2.下载Rabbitmq的镜像 拉…

php高级之框架源码、宏扩展原理与开发

在使用框架的时候我们经常会看到如下代码 类的方法不会显示地声明在代码里面&#xff0c;而是通过扩展的形式后续加进去&#xff0c;这么做的好处是可以降低代码的耦合度、保证源码的完整性。我自己看着框架源码实现了这个功能。 以下是结果: base代码 index.php <?php…

哈希表和二维矩阵的结合-2352. 相等行列对(新思路、新解法)

题目链接及描述 . - 力扣&#xff08;LeetCode&#xff09;. - 备战技术面试&#xff1f;力扣提供海量技术面试资源&#xff0c;帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/equal-row-and-column-pairs/description/?envTypest…

Java | Leetcode Java题解之第135题分发糖果

题目&#xff1a; 题解&#xff1a; class Solution {public int candy(int[] ratings) {int n ratings.length;int ret 1;int inc 1, dec 0, pre 1;for (int i 1; i < n; i) {if (ratings[i] > ratings[i - 1]) {dec 0;pre ratings[i] ratings[i - 1] ? 1 : …

【Python报错】已解决AttributeError: list object has no attribute items ( Solved )

解决Python报错&#xff1a;AttributeError: list object has no attribute ‘items’ (Solved) 在Python中&#xff0c;AttributeError通常表示你试图访问的对象没有你请求的属性或方法。如果你遇到了AttributeError: list object has no attribute items的错误&#xff0c;这…

探索Adobe XD:高效UI设计软件的中文入门教程

在这个数字化世界里&#xff0c;创意设计不仅是为了吸引观众的注意&#xff0c;也是用户体验的核心部分。强大的设计工具可以帮助设计师创造出明亮的视觉效果&#xff0c;从而提高用户体验。 一、Adobe XD是什么&#xff1f; Adobe XD是一家知名软件公司 Adobe Systems 用户体…

Finance Manager System (FMS)

Finance Manager System &#xff08;FMS&#xff09;财务软件&#xff0c;基本三报表合并报表

线性代数|机器学习-P8矩阵低秩近似eckart-young

文章目录 1. SVD奇异值分解2. Eckart-Young2.1 范数 3. Q A Q U Σ V T QAQU\Sigma V^T QAQUΣVT4. 主成分分析图像表示 1. SVD奇异值分解 我们知道&#xff0c;对于任意矩阵A来说&#xff0c;我们可以将其通过SVD奇异值分解得到 A U Σ V T AU\Sigma V^T AUΣVT&#xff0…

python单元测试

需要提前配置一下环境&#xff1a;单元测试Unittests TestCase测试用例 import unittestdef my_sum(a, b):return a bclass Test(unittest.TestCase):def test_001(self):print(my_sum(3, 6))def test_002(self):print(my_sum(1, 3))注意类中测试方法都必须以test开头 Test…

[Algorithm][动态规划][两个数组的DP][正则表达式匹配][交错字符串][两个字符串的最小ASCII删除和][最长重复子数组]详细讲解

目录 1.正则表达式匹配1.题目链接2.算法原理详解3.代码实现 2.交错字符串1.题目链接2.算法原理详解3.代码实现 3.两个字符串的最小ASCII删除和1.题目链接2.算法原理详解3.代码实现 4.最长重复子数组1.题目链接2.算法原理详解3.代码实现 1.正则表达式匹配 1.题目链接 正则表达…