自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(71)
  • 收藏
  • 关注

原创 分布式系统的基石之 ZooKeeper

由于 ZooKeeper 集群的实现采用了一致性算法,所以它成为一个非常可靠的、强一致性的、没有单点故障的分布式数据存储系统。但它的目标不是提供简单的数据存储功能,而是成为分布式集群中不可或缺的基础设施。1.ZooKeeper 的原理与功能前面我们提到,绝大多数分布式系统都采用了中心化的设计理念,一些新的分布式系统的设计表面上看似乎是无中心的,但实际上隐含了中心化的内核,在这类架构中往往有如下普适性的共性需求。(1)提供集群的集中化的配置管理功能。该看起来简单,但实际上也有复杂之处,比如不重启程序而让

2021-09-08 21:58:08 307

原创 分布式系统的一致性原理

对于分布式系统,我们必须要深刻理解和牢记一点:分布式系统的不可靠性。可靠性指系统可以无故障地持续运行,如果一个系统在运行中意外宕机或者无法正常使用,它就是一个不可靠的系统,即使宕机和无法使用的时间很短。我们知道,分布式系统通常是由独立的服务器通过网络松散耦合组成的,网络在本质上是一个复杂的 I/O 系统,在通常情况下,I/O 发生故障的概率和不可靠性要远远高于主机的 CPU 和内存,加之网络设备的引入,也增加了系统发生大面积「瘫痪」的可能性。总之,分布式系统中重要的理论和设计都是建立在分布式系统不可靠这一

2021-09-08 21:43:23 662

原创 从分布式系统的设计理念说起

分布式系统的首要目标是提升系统的整体性能和吞吐量。如果最终设计出来的分布式系统占用了 10 台机器才勉强达到单机系统的两倍性能,那么这个分布式系统还有存在的价值吗?另外,即使采用了分布式架构,也仍然需要尽力提升单机上的程序性能,使得整体性能达到最高。所以,我们仍然需要掌握高性能单机程序的设计和编程技巧,例如多线程并发编程、多进程高性能 IPC 通信、高性能的网络框架等。另外,任何分布式系统都存在让人无法回避的风险和严重问题,即系统发生故障的概率大大增加:小到一台服务器的硬盘发生故障或宕机、一根网线坏掉,大

2021-09-08 21:36:35 7014

原创 从 CDN 到 SD-WAN

1.互联互不通的运营商网络说到我们的互联网,不能不提的是另一词——「互联互不通」。2008 年 5 月,我国电信业开始了第三次大规模重组,重组后,三家基础电信运营企业拿到了全业务运营的牌照,中国移动正式进军互联网领域,互联网产业的格局自此发生重大变革。经过此次重组,中国互联网骨干网互联单位由 10 家变成了 7 家,分别包括 3 家经营性互联单位——中国电信、中国联通和中国移动,4 家非经营性互联单位——教育网、经贸网、长城网和科技网,原中国卫通的互联网资源并入中国电信,原中国网通的互联网资源并入中国联通

2021-09-08 21:29:10 393 1

原创 分布式系统的基石TCP/IP

TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/互联网络协议)是 Internet 的基本协议,简单地说,由底层的 IP 和 TCP 组成。TCP/IP 的开发工作始于 20 世纪 70 年代,该协议是用于互联网的第一套协议。TCP/IP 结合 DNS、路由协议等一系列相关协议,最终实现了网络之间任意两点间的数据通信问题。我们来看看在访问百度首页时,数据包是如何从计算机传送到百度的服务器上的。在命令行中运行 ipconfig/al

2021-09-08 21:19:34 190

原创 HTTP的前世今生

HTTP是全球最大规模的分布式系统网络的基础之一,也采用了传统的服务器-客户端的通信设计模式。从1.0版本到1.1版本再到2.0版本,HTTP始终占据着分布式系统通信领域重要的一席之地。一.HTTP的设计思路首先,在报文编码方式上,HTTP采用了面向程序员的文本(ASClI)编码方式而非面向计算机的二进制编码方式。该设计非常关键,这是因为文本编码数据很直观,文本编码协议甚至不用编写额外冗长的接口说明文档就很容易被程序员理解,也非常方便我们准备模拟数据编写单元测试,而当线上系统出现Bug 时,运维人员也

2021-09-03 15:09:58 291

转载 Nacos发布为Windows服务自启动

Nacos发布为Windows服务自启动前言小公司,没有买自己的局域网服务器,测试服务器(centos)在阿里云使用nacos网络交互通信慢,于是在本机电脑上也配了nacos服务,注册为Windows服务自启动,方便自己独立开发与调试正文1. 搜到的Windows服务注册:https://docs.gitea.io/zh-cn/windows-service/参考了一下,改改自己用:sc create nacos start= auto binPath= ““E:\just4fun\n

2021-09-02 11:50:48 619

转载 SpringCloud之Zuul网关原理及其配置

SpringCloud之Zuul网关原理及其配置Zuul是spring cloud中的微服务网关。网关: 是一个网络整体系统中的前置门户入口。请求首先通过网关,进行路径的路由,定位到具体的服务节点上。Zuul是一个微服务网关,首先是一个微服务。也是会在Eureka注册中心中进行服务的注册和发现。也是一个网关,请求应该通过Zuul来进行路由。Zuul网关不是必要的。是推荐使用的。使用Zuul,一般在微服务数量较多(多于10个)的时候推荐使用,对服务的管理有严格要求的时候推荐使用,当微服务权限要求严格的

2021-09-01 13:29:50 177

转载 Spring Security教程

Spring Security教程Web系统中登录认证(Authentication)的核心就是凭证机制,无论是Session还是JWT,都是在用户成功登录时返回给用户一个凭证,后续用户访问接口需携带凭证来标明自己的身份。后端会对需要进行认证的接口进行安全判断,若凭证没问题则代表已登录就放行接口,若凭证有问题则直接拒绝请求。这个安全判断都是放在过滤器里统一处理的:登录认证是对用户的身份进行确认,权限授权(Authorization)是对用户能否访问某个资源进行确认,授权发生在认证之后。 这种通用逻辑都

2021-08-31 19:08:43 4312 9

原创 Consider defining a bean named ‘shiroFilterFactoryBean‘ in your configuration.

在Spring Boot整合shiro中,启动程序出现了下面的错误:***************************APPLICATION FAILED TO START***************************Description:Method filterShiroFilterRegistrationBean in org.apache.shiro.spring.config.web.autoconfigure.ShiroWebFilterConfiguration r

2021-04-26 09:29:23 1861 1

转载 如何搭建一个拖垮公司的技术架构?

架构师不仅拿钱多,还受到程序员的崇拜、妹子的仰慕。他们走路带风、出场自带BGM,吹啊吹,我的骄傲放纵。唯一的缺点,就是费头发。架构师虽好,却不是人人都能当的,除了聪明绝顶,还要有扎实的技术功底,经过多年的努力,我做到了一点,我已经绝顶了。一名架构师,必须身经百战,经历过无数重大宕机事故。因为神枪手都是子弹喂出来的,身上的每一块肥肉都是你亲口吃出来的,无他,唯手熟尔。我作为技术Leader中最懂架构的骑手,不仅送得一手好外卖,还搞宕过不少大型系统。下面结合自己的经历谈一谈:如何搭建一个拖垮公司的技术架

2021-04-25 11:41:12 184

转载 Spring事务源码分析专题(一)JdbcTemplate使用及源码分析

本系列文章为事务专栏分析文章,整个事务分析专题将按下面这张图完成对源码分析前,我希望先介绍一下Spring中数据访问的相关内容,然后层层递进到事物的源码分析,主要分为两个部分JdbcTemplate使用及源码分析Mybatis的基本使用及Spring对Mybatis的整合本文将要介绍的是第一点。JdbcTemplate使用示例public class DmzService { private JdbcTemplate jdbcTemplate; public void setDat

2021-04-25 11:27:36 172

转载 Spring Boot自动装配原理

每次问到 Spring Boot, 面试官非常喜欢问这个问题:“讲述一下 SpringBoot 自动装配原理?”。我觉得我们可以从以下几个方面回答:什么是 SpringBoot 自动装配?SpringBoot 是如何实现自动装配的?如何实现按需加载?如何实现一个 Starter?前言使用过 Spring 的小伙伴,一定有被 XML 配置统治的恐惧。即使 Spring 后面引入了基于注解的配置,我们在开启某些 Spring 特性或者引入第三方依赖的时候,还是需要用 XML 或 Java 进行显

2021-04-25 10:25:50 162

转载 为什么HashMap并发时会引起死循环?

今天研读Java并发容器和框架时,看到为什么要使用ConcurrentHashMap时,其中有一个原因是:线程不安全的HashMap, HashMap在并发执行put操作时会引起死循环,是因为多线程会导致HashMap的Entry链表形成环形数据结构,查找时会陷入死循环。纠起原因看了其他的博客,都比较抽象,所以这里以图形的方式展示一下,希望支持!1)当往HashMap中添加元素时,会引起HashMap容器的扩容,原理不再解释,直接附源代码,如下:/** * * 往表中添加元素,如果

2021-04-25 09:49:31 502 1

转载 二维码扫码登录的项目实战

在日常生活中,二维码出现在很多场景,比如超市支付、系统登录、应用下载等等。了解二维码的原理,可以为技术人员在技术选型时提供新的思路。对于非技术人员呢,除了解惑,还可以引导他更好地辨别生活中遇到的各种二维码,防止上当受骗。二维码,大家再熟悉不过了。购物扫个码,吃饭扫个码,坐公交也扫个码。在扫码的过程中,大家可能会有疑问:这二维码安全吗?会不会泄漏我的个人信息?更深度的用户还会考虑:我的系统是不是也可以搞一个二维码来推广呢?这时候就需要了解一下二维码背后的技术和逻辑了!二维码最常用的场景之一就是通过

2021-04-24 09:58:26 427

转载 52条技巧,SQL性能直接起飞了!!

文章总结了52条SQ 性能优化技巧,用简洁明了的语言介绍给大家,不废话全是干货,需要的可以收藏。对查询进行优化,应尽量避免全表扫描,首先应考虑在where及order by涉及的列上建立索引。应尽量避免在where子句中对字段进行null值判断,创建表时null是默认值,但大多数时候应该使用not null,或者使用一个特殊的值,如0,-1作为默认值。应尽量避免在where子句中使用!=或<>操作符, MySQL只有对以下操作符才使用索引:<,<=,=,>,&

2021-04-23 15:46:39 159

原创 Spring Cloud Config

Spring Cloud Config是Spring Cloud团队创建的一个全新项目, 用来为分布式系统中的基础设施和微服务应用提供集中化的外部配置支持,它分为服务端与客户端两个部分。其中服务端也称为分布式配置中心,它是一个独立的微服务应用,用来连接配置仓库并为客户端提供获取配置信息、加密/解密信息等访问接口;而客户端则是微服务架构中的各个微服务应用或基础设施,它们通过指定的配置中心来管理应用资源与业务相关的配置内容,并在启动的时候从配置中心获取和加载配置信息。Spring Cloud Config实现了

2021-04-23 14:55:15 123

原创 Spring Cloud Hystrix(二)

Hystrix仪表盘在断路器原理的介绍中,我们多次提到关于请求命令的度量指标的判断。这些度量指标都是HystrixCommand和HystrixObservableCommand实例在执行过程中记录的重要信息,它们除了在Hystrix断路器实现中使用之外,对于系统运维也有非常大的帮助。这些指标信息会以“滚动时间窗”与“桶”结合的方式进行汇总,并在内存中驻留一段时间,以供内部或外部进行查询使用,Hystrix 仪表盘就是这些指标内容的消费者之一。通过之前的内容,我们已经体验到了Spring Cloud对H

2021-04-22 17:16:49 114 1

原创 Spring Cloud Hystrix(一)

在微服务架构中,我们将系统拆分成了很多服务单元,各单元的应用间通过服务注册与订阅的方式互相依赖。由于每个单元都在不同的进程中运行,依赖通过远程调用的方式执行,这样就有可能因为网络原因或是依赖服务自身问题出现调用故障或延迟,而这些问题会直接导致调用方的对外服务也出现延迟,若此时调用方的请求不断增加,最后就会因等待出现故障的依赖方响应形成任务积压,最终导致自身服务的瘫痪。举个例子,在一个电商网站中,我们可能会将系统拆分成用户、订单、库存、积分、评论等一系列服务单元。用户创建一个订单的时候,客户端将调用订单服务

2021-04-20 11:43:59 287

原创 Spring Cloud Eureka

Spring Cloud Eureka是Spring Cloud Netflix微服务套件中的一部分,它基于Netflix Eureka做了二次封装,主要负责完成微服务架构中的服务治理功能。Spring Cloud通过为Eureka增加了Spring Boot风格的自动化配置,我们只需通过简单引入依赖和注解配置就能让Spring Boot构建的微服务应用轻松地与Eureka服务治理体系进行整合。下面,我们学习这些核心内容,并构建起用于服务治理的基础设施。构建服务注册中心服务注册与服务发现Eurek

2021-04-15 17:29:59 302

转载 java注解-最通俗易懂的讲解

来源:秒懂,Java 注解 (Annotation)你可以这样学Annotation 中文译过来就是注解、标释的意思,在 Java 中注解是一个很重要的知识点,但经常还是有点让新手不容易理解。我个人认为,比较糟糕的技术文档主要特征之一就是:用专业名词来介绍专业名词。比如:Java 注解用于为 Java 代码提供元数据。作为元数据,注解不直接影响你的代码执行,但也有一些类型的注解实际上可以用于这一目的。Java 注解是从 Java5 开始添加到 Java 的。这是大多数网站上对于 Jav.

2021-04-14 16:30:24 89

转载 Spring Boot注解大全

@SpringBootApplication申明让spring boot自动给程序进行必要的配置,这个配置等同于:@Configuration ,@EnableAutoConfiguration 和 @ComponentScan 三个配置。@ResponseBody表示该方法的返回结果直接写入HTTP response body中,一般在异步获取数据时使用,用于构建RESTful的api。在使用@RequestMapping后,返回值通常解析为跳转路径,加上@Responsebody后返回结果不.

2021-04-13 16:42:27 99

原创 公告的设计和实现

公告的设计和实现概述公告相关操作设计合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入概述一般的网站平台都会有公告功能,一般是平台面相用户群体进行分发,举个形象的例子,就像村里面村长用大喇叭通知各村名,举行什么活动的场景一样。但也有特别情

2021-04-13 16:14:56 2852

原创 Mybatis plus 代码生成

代码生成工具类封装import com.baomidou.mybatisplus.annotation.DbType;import com.baomidou.mybatisplus.annotation.IdType;import com.baomidou.mybatisplus.core.toolkit.StringPool;import com.baomidou.mybatisplus.generator.AutoGenerator;import com.baomidou.mybatis

2021-02-20 11:15:03 650 2

原创 【Spring Security系列】跨域请求伪造的防护

CSRF的全称是(Cross Site Request Forgery),可译为跨域请求伪造,是一种利用用户带登录 态的cookie迚行安全操作的攻击方式。CSRF实际上并不难防,但常常被系统开发者忽略,从而埋下巨 大的安全隐患。1.CSRF的攻击过程为了试图说明CSRF的攻击过程,现在思考下面这个场景。假如有一个博客网站,为了激励用户写出高质量的博文,设定了一个文章被点赞就能奖励现金的 机制,于是有了一个可用于点赞的API,只需传入文章id即可:http://com.example.co

2020-07-16 13:20:25 643

原创 【Spring Security系列】跨域与CORS

跨域是一种浏览器同源安全策略,即浏览器单方面限制脚本的跨域访问。1.认识跨域很多人误认为资源跨域时无法请求,实际上,通常情况下请求是可以正常发起的(注意,部分浏 览器存在特例),后端也正常进行了处理,只是在返回时被浏览器拦截,导致响应内容不可使用。可 以论证这一点的著名案例就是CSRF跨站攻击。此外,我们平常所说的跨域实际上都是在讨论浏览器行为,包括各种WebView容器等(其中,以 XmlHttpRequest 的使用为主)。由于JavaScript 运行在浏览器之上,所以 Ajax的跨域成为

2020-07-16 11:15:00 1030

原创 【Spring Security系列】Spring Security密码加密

密码安全是互联网安全的一个缩影,我们在享受互联网服务的同时,也应当对它投入更多的关注。 1.密码安全的重要性2011年12月,国内某开发者社区网站被黑客“拖库”,600多万个密码明文存储的用户账号被公开, 大量用户直接面临数据隐私泄露和数据安全的双重威胁。这次事件为我们敲响了警钟,一旦发生“拖库”,如何尽可能地减少用户的损失,在每一个系统中 都不应被忽略。从开发者的角度而言,可以落实在如何安全存储用户密码上。 ...

2020-07-02 14:08:15 2722

原创 【Spring Security系列】Spring Security整合Spring Session解决集群会话问题

Spring Security提供的会话并发控制是基于内存实现的,在集群部署时如果想要使用会话并发控制,则必须进行适配。 session共享,本质上就是存储容器的变动,但如何得到最优存取结构、如何准确清理过期会话,以及如何整合WebSocket等无法回避。Spring Session就是专门用于解决集群会话问题的,它不仅为集群会话提供了非常完善的支持,与Spring Security的整合也有专门的实现。 Spring Session支持多种类型的存储容器,包括Redis、MongoDB等。由于接下来的整合

2020-07-02 11:56:21 1027 2

原创 【Spring Security系列】Spring Security集群会话的解决方案

解决集群会话的常见方案有三种: session保持 session复制 session共享 session保持也叫粘滞会话(Sticky Sessions),通常采用IP哈希负载策略将来自相同客户端的请求转发至相同的服务器上进行处理。session保持虽然避开了集群会话,但也存在一些缺陷。例如,某个营业部的网络使用同个IP出口,那么使用该营业部网络的所有员工实际的源IP其实是同一个,在IP哈希负载策略下,这些员工的请求都将被转发到相同的服务器上,存在一定程度的负载失衡。 sessio

2020-07-01 16:54:03 849

原创 【Spring Security系列】Spring Security集群会话的缺陷

会话通常保存在服务器内存中,客户端访问时根据自己的sessionId在内存中查找,这种方法虽然简单快捷,但缺点也很明显。从容量上来说,服务器内存有限,除了系统正常运行的消耗,留给session的空间不多,当访问量增大时,内存就会捉襟见肘。从稳定性上来说,session依赖于内存,而内存并非持久性存储容器,就算服务器本身是可靠的,但当部署在上面的服务停止或重启时,也会导致所有会话状态丢失。当然,这两个缺点还只是体验性缺陷,并不足以影响可用性,在单机部署时为 了节省精力忽略这两个问题也是可以的。但当我们的系统采

2020-07-01 16:46:05 373

原创 【Spring Security系列】Spring Security会话管理

只需在两个浏览器中用同一个账号登录就会发现,到目前为止,系统尚未有任何会话并发限制。一个账户能多处同时登录可不是一个好的策略。事实上,Spring Security已经为我们提供了完善的会话管理功能,包括会话固定攻击、会话超时检测以及会话并发控制。1.什么是会话会话(session)就是无状态的 HTTP 实现用户状态可维持的一种解决方案。HTTP 本身的无状态使得用户在与服务器的交互过程中,每个请求之间都没有关联性。这意味着用户的访问没有身份记录,站点也无法为用户提供个性化的服务。session的

2020-07-01 15:23:58 1456 1

原创 【Spring Security系列】Spring Security注销登录

认证系统往往都带有注销登录功能,Spring Security也提供了这方面的支持。事实上,从我们编写配置类继承WebSecurityConfigurerAdapter的那一刻起,Spring Security就已经为我们的系统埋入了注销的逻辑。protected final HttpSecurity getHttp() throws Exception { if (http != null) { return http; } AuthenticationEventPublishe

2020-06-30 17:32:09 530

原创 【Spring Security系列】Spring Security自动登录

1.为什么需要自动登录 当我们在某个网站上注册账号时,网站会对我们设置的登录密码提出要求。例如,有的网站要求使用固定位数的纯数字密码,有的网站则强制要求用户使用英文+数字组合成的密码,甚至要求加一些特殊符号来组成密码。总体而言,设定一个密码并不困难,真正的困难总是在下次登录时才会遇到。要么想不出网站要求的密码格式是什么,要么还原不了设置密码时的思维状态。总之,在几次尝试登录失败之后,大部分人会选择找回密码,从而再次陷入如何设置密码的循环里。为了尽可能减少用户重新登录的频率,在系统开发之初就需要考虑加入可

2020-06-30 15:48:52 983

原创 【Spring Security系列】Spring Security使用自定义认证实现图形验证码

前面使用过滤器的方式实现了带图形验证码的验证功能,属于Servlet层面,简单、易理解。其实,Spring Security还提供了一种更优雅的实现图形验证码的方式,即自定义认证。 1.认识AuthenticationProvider 在学习Spring Security的自定义认证之前,有必要了解Spring Security是如何灵活集成多种认证技术的。我们所面对的系统中的用户,在Spring Security中被称为主体(principal)。主体包含了所有能够经过验证而获得系统访问权限的

2020-06-30 11:46:14 561

原创 【Spring Security系列】Spring Security使用过滤器实现图形验证码

在验证用户名和密码之前,引入辅助验证可有效防范暴力试错,图形验证码就是简单且行有效的一种辅助验证方式。下面将使用过滤器和自定义认证两种方式实现图形验证码功能。 验证码(CAPTCHA)的全称是Completely Automated Public Turing test to tell Computers and Humans Apart,翻译过来就是“全自动区分计算机和人类的图灵测试”。通俗地讲,验证码就是为了防止恶意用户暴力重试而设置的。不管是用户注册、用户登录,还是论坛发帖,如...

2020-06-30 10:22:47 1463 1

原创 【Spring Security系列】Spring Security自定义数据库模型的认证和授权

让Spring Security适应系统,而非让系统适应Spring Security,是Spring Security框架开发者和使用者的共识。下面我们将使用自定义数据库模型接入Spring Security,数据库依然是MySQL,持久层框架则选用MyBatis(倾向于使用JPA的读者也可以自行选型,它们在Spring Security部分的实践是一样的)。旁枝末节的知识会点到即止,我们重点介绍Spring Security相关的内容,所以期望读者自行阅读相关资料,也可以选择暂时略过在前面的博客

2020-06-29 16:45:17 442 1

原创 【Spring Security系列】Spring Security基于默认数据库模型的认证与授权

除了InMemoryUserDetailsManager,Spring Security还提供另一个UserDetailsService实现类: JdbcUserDetailsManager。 JdbcUserDetailsManager帮助我们以JDBC的方式对接数据库和Spring Security,它设定了一个默认的数据库模型,只要遵从这个模型,在简便性上,JdbcUserDetailsManager甚至可以媲美InMemoryUserDetailsManager。1.配置数据库引入JDBC和

2020-06-24 17:34:38 589

原创 【Spring Security系列】Spring Security 基于内存的多用户支持

到目前为止,我们仍然只有一个可登录的用户,怎样引入多用户呢?非常简单,我们只需实现一个自定义的UserDetailsService即可。 @Beanpublic UserDetailsService userDetailsService() { InMemoryUserDetailsManager manager = new InMemoryUserDetailsManager(); manager.createUser(User.withUsername("user").password("1

2020-06-24 14:41:02 704

原创 【Spring Security系列】Spring Security简单授权

在前面的博客中,我们使用了Spring Security默认的安全机制:仅有一个用户,仅有一种角色。在实际开发中,这自然是无法满足需求的。本篇将更加深入地对Spring Security进行配置,且初步使用授权机制。首先,在controller包下新建三个控制器@RestController@RequestMapping("/admin/api")public class AdminController { @GetMapping("/hello") public St...

2020-06-24 14:12:16 239

原创 【Spring Security系列】Spring Security 自定义表单登录页

虽然自动生成的表单登录页可以方便、快速地启动,但是大多数应用程序更希望提供自己的表单登录页,此时就需要覆写configure方法。 1.覆写configure方法,添加自定义配置@EnableWebSecuritypublic class WebSecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exce

2020-06-24 12:00:46 708

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除