Eureka加密 及Gateway搭建 - 基于SpringBoot不同版本配置方式

前言:在最近开发过程中 偶遇根据SpringBoot不同版本导致配置方式不一致等问题

通用:Eureka服务配置 Server端:

一、引入依赖 spring-boot-starter-security
<dependencies><!-- Eureka 声明依赖 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency><!-- 使用 security 加密 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId></dependency>
</dependencies>
二、配置 application.yml
spring:security:user:name: xxxpassword: yyy
三、启动类声明 Eureka 注解
@SpringBootApplication(scanBasePackages = "config配置文件目录")
@EnableEurekaServer
public class EurekaApplication {public static void main(String[] args) {SpringApplication.run(EurekaApplication.class, args);}
}

区别:

一、使用 SpringBoot 老版本:
配置如下:
  1. JDK 1.8
  2. SpringBoot 1.5.2.RELEASE
  3. SpringCloud 1.2.2.RELEASE
配置方式:继承 WebSecurityConfigurerAdapter 类 并重写 configure 方法(通过重写这个方法 可以重新自定义安全策略)
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {@Overrideprotected void configure(HttpSecurity http) throws Exception {// 禁用 CSRFhttp.csrf().disable();// 如果需要禁用 CSRF,但又想确保安全性,可以考虑使用以下替代方案// http.csrf().csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse());super.configure(http);}}
二、使用 SpringBoot 新版本
配置如下:
  1. JDK 21
  2. SpringBoot 3.4.1
  3. SpringCloud 2024.0.0
配置方式:跟老版本不同的是 不需要去继承并重写 仅需单独注册一个Bean文件 通过表达式方式进行单独配置
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.web.SecurityFilterChain;@Configuration
public class WebSecurityConfig {@Beanpublic SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {http.csrf(csrf -> csrf.disable()) // 禁用 CSRF.authorizeHttpRequests(authorize -> authorize.requestMatchers("/eureka/**").authenticated() // 对 Eureka 路径启用认证.anyRequest().permitAll() // 允许其他请求).httpBasic(httpBasic -> {}); // 新方式启用 HTTP Basicreturn http.build();}
}

测试:创建 Eureka Client 端 进行服务注册(Gateway举例)

一、引入依赖 spring-boot-starter-security
<dependencies><!-- Spring Cloud Gateway --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency><!-- Eureka Client --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency><!-- Spring Boot Starter --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency>
</dependencies>
二、配置 application.yml(核心配置:defaultZone: http://设置的账号:设置的密码@localhost:60001/eureka/)
server:port: 60003
spring:application:name: xxxx-gateway # 服务名,将在 Eureka 中注册cloud:gateway:discovery:locator:enabled: true # 启用动态路由lower-case-service-id: trueglobal-cors: # 配置跨域cors-configurations:'[/**]':allowedOrigins: "*"allowedMethods:- GET- POST- PUT- DELETEallowedHeaders: "*"allowCredentials: trueroutes:- id: xxx-baseuri: lb://XXX-BASE # 使用服务名进行负载均衡访问predicates:- Path=/base/**eureka:client:service-url:defaultZone: http://xxx:yyy@localhost:60001/eureka/ # Eureka 服务注册中心地址register-with-eureka: true # 是否注册到 Eurekafetch-registry: true # 是否从 Eureka 拉取注册表instance:prefer-ip-address: true # 使用 IP 注册logging:level:org.springframework.cloud.gateway: DEBUG
三、启动类声明注解
@SpringBootApplication
@EnableDiscoveryClient
public class GatewayApplication {public static void main(String[] args) {SpringApplication.run(GatewayApplication.class, args);}
}

需要特别注意报错原因:

  1. JDK、Springboot、SpringCloud 版本不兼容 启动报错 解决方式:https://spring.io/projects/spring-cloud#learn 在其中查看对应版本信息
  2. 账户密码设置错误
  3. Client端配置错误 举例:原本配置仅用 defaultZone: http://localhost:60001/eureka/ 既可 而如果使用 Eureka加密后 则需要 defaultZone: http://xxx:yyy@localhost:60001/eureka/ 区别为 xxx:yyy@(xxx为账户 yyy为密码 中间需要使用:冒号隔开 并在输入完成后 使用@符号进行确认)
  4. 未配置 Config 类

成功案例如下:启动Eureka和Gateway后 通过浏览器方式进入 http://localhost:60001/eureka/ 后发现 Client端 成功注册既可

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

3-Not_only_base/2018网鼎杯

3-Not_only_base 打开code MCJIJSGKPZZYXZXRMUW3YZG3ZZG3HQHCUS 分析&#xff1a; 首先看题知道解密过程中肯定有base解密。 知识点1&#xff1a; Base64字符集&#xff1a; 包含大小写字母&#xff08;A-Z、a-z&#xff09;、数字&#xff08;0-9&#xff09;以及两个特殊字…

Polardb三节点集群部署安装--附虚拟机

1. 架构 PolarDB-X 采用 Shared-nothing 与存储计算分离架构进行设计&#xff0c;系统由4个核心组件组成。 计算节点&#xff08;CN, Compute Node&#xff09; 计算节点是系统的入口&#xff0c;采用无状态设计&#xff0c;包括 SQL 解析器、优化器、执行器等模块。负责数据…

Java基础面试题50题

1&#xff0c;""空字符串的作用 package com.neuedu.nineteen;public class Test {public static void main(String[] args) {String s"";for (char i a; i < d; i) {ssi;//输出abc // sis;//输出cba}System.out.println(s);} }如题所示&…

【现代深度学习技术】深度学习计算 | 延后初始化自定义层

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈PyTorch深度学习 ⌋ ⌋ ⌋ 深度学习 (DL, Deep Learning) 特指基于深层神经网络模型和方法的机器学习。它是在统计机器学习、人工神经网络等算法模型基础上&#xff0c;结合当代大数据和大算力的发展而发展出来的。深度学习最重…

Immutable设计 SimpleDateFormat DateTimeFormatter

专栏系列文章地址&#xff1a;https://blog.csdn.net/qq_26437925/article/details/145290162 本文目标&#xff1a; 理解不可变设计模式&#xff0c;时间format有线程安全要求的注意使用DateTimeFormatter 目录 ImmutableSimpleDateFormat 非线程安全可以synchronized解决&a…

Got socket exception during request. It might be caused by SSL misconfiguration

引入xutils3依赖&#xff0c;结果包找不到 maven里面添加阿里云镜像 核心 maven { url uri("https://maven.aliyun.com/nexus/content/groups/public/") }repositories {google()maven { url uri("https://maven.aliyun.com/nexus/content/groups/public/"…

RocketMQ实战—4.消息零丢失的方案

大纲 1.全链路分析为什么用户支付完成后却没有收到红包 2.RocketMQ的事务消息机制实现发送消息零丢失 3.RocketMQ事务消息机制的底层实现原理 4.是否可以通过同步重试方案来代替事务消息方案来实现发送消息零丢失 5.使用RocketMQ事务消息的代码案例细节 6.同步刷盘Raft协…

【Elasticsearch】date range聚合

好的&#xff0c;继续之前的示例&#xff1a; json ] } } } } 4.3 自定义键&#xff08;key&#xff09; 通过为每个范围指定一个唯一的键&#xff08;key&#xff09;&#xff0c;可以在结果中更方便地引用每个范围。这在使用keyed参数将结果以键值对形式返回时尤其有用。 j…

【R语言】获取数据

R语言自带2种数据存储格式&#xff1a;*.RData和*.rds。 这两者的区别是&#xff1a;前者既可以存储数据&#xff0c;也可以存储当前工作空间中的所有变量&#xff0c;属于非标准化存储&#xff1b;后者仅用于存储单个R对象&#xff0c;且存储时可以创建标准化档案&#xff0c…

[leetcode]双指针算法的使用

零.参考文章 双指针技术在数组和链表问题中的应用解析-CSDN博客 一.使用情况 双指针即是在有序数组的情况下&#xff0c;我们通过两个指针在遍历的过程中进行标记&#xff0c;对满足条件的进行处理&#xff0c;直至遍历完整个数组。 二.举个例子 2.1小人过河问题&#xff…

自指学习:AGI的元认知突破

文章目录 引言:从模式识别到认知革命一、自指学习的理论框架1.1 自指系统的数学定义1.2 认知架构的三重反射1.3 与传统元学习的本质区别二、元认知突破的技术路径2.1 自指神经网络架构2.2 认知效能评价体系2.3 知识表示的革命三、实现突破的关键挑战3.1 认知闭环的稳定性3.2 计…

C++ 入门速通-第5章【黑马】

内容来源于&#xff1a;黑马 集成开发环境&#xff1a;CLion 先前学习完了C第1章的内容&#xff1a; C 入门速通-第1章【黑马】-CSDN博客 C 入门速通-第2章【黑马】-CSDN博客 C 入门速通-第3章【黑马】-CSDN博客 C 入门速通-第4章【黑马】-CSDN博客 下面继续学习第5章&…

hot100(7)

61.31. 下一个排列 - 力扣&#xff08;LeetCode&#xff09; 数组问题&#xff0c;下一个更大的排列 题解&#xff1a;31. 下一个排列题解 - 力扣&#xff08;LeetCode&#xff09; &#xff08;1&#xff09;从后向前找到一个相邻的升序对&#xff08;i,j)&#xff0c;此时…

图像分类与目标检测算法

在计算机视觉领域&#xff0c;图像分类与目标检测是两项至关重要的技术。它们通过对图像进行深入解析和理解&#xff0c;为各种应用场景提供了强大的支持。本文将详细介绍这两项技术的算法原理、技术进展以及当前的落地应用。 一、图像分类算法 图像分类是指将输入的图像划分为…

记录一次-Rancher通过UI-Create Custom- RKE2的BUG

一、下游集群 当你的下游集群使用Mysql外部数据库时&#xff0c;会报错&#xff1a; **他会检查ETCD。 但因为用的是Mysql外部数据库&#xff0c;这个就太奇怪了&#xff0c;而且这个检测不过&#xff0c;集群是咩办法被管理的。 二、如果不选择etcd,就选择控制面。 在rke2-…

SpringUI Web高端动态交互元件库

Axure Web高端动态交互元件库是一个专为Web设计与开发领域设计的高质量资源集合&#xff0c;旨在加速原型设计和开发流程。以下是关于这个元件库的详细介绍&#xff1a; 一、概述 Axure Web高端动态交互元件库是一个集成了多种预制、高质量交互组件的工具集合。这些组件经过精…

MySQL表的CURD

目录 一、Create 1.1单行数据全列插入 1.2多行数据指定列插入 1.3插入否则更新 1.4替换 2.Retrieve 2.1 select列 2.1.1全列查询 2.1.2指定列查询 2.1.3查询字段为表达式 2.1.4为查询结果指定别名 2.1.5结果去重 2.2where条件 2.3结果排序 2.4筛选分页结果 三…

文字加持:让 OpenCV 轻松在图像中插上文字

前言 在很多图像处理任务中,我们不仅需要提取图像信息,还希望在图像上加上一些文字,或是标注,或是动态展示。正如在一幅画上添加一个标语,或者在一个视频上加上动态字幕,cv2.putText 就是这个“文字魔术师”,它能让我们的图像从“沉默寡言”变得生动有趣。 今天,我们…

(9)gdb 笔记(2):查看断点 info b,删除断点 delete 3,回溯 bt,

&#xff08;11&#xff09; 查看断点 info b&#xff1a; # info b举例&#xff1a; &#xff08;12&#xff09;删除断点 delete 2 或者删除所有断点&#xff1a; # 1. 删除指定的断点 delete 3 # 2. 删除所有断点 delete 回车&#xff0c;之后输入 y 确认删除所有断点 举…

游戏引擎学习第88天

仓库:https://gitee.com/mrxiao_com/2d_game_2 调查碰撞检测器中的可能错误 在今天的目标是解决一个可能存在的碰撞检测器中的错误。之前有人提到在检测器中可能有一个拼写错误&#xff0c;具体来说是在测试某个变量时&#xff0c;由于引入了一个新的变量而没有正确地使用它&…