前言:
抽象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实现成员之间相互交互、协调和协同作业的标准服务。
这样看太抽象了,换个方向
到了这里,站长感觉这个简介也不算难,还真可以通过简介退出结论
这期先到这里