SpringCloud 2.1.6.RELEASE版本: Springboot + spring boot admin 监控 spring security权限控制

本文介绍了如何在SpringCloud 2.1.6.RELEASE版本中,使用SpringBoot Admin搭建服务端,并结合Eureka服务端进行监控。同时,文章详细讲解了如何在SpringBoot Admin中集成Spring Security进行权限控制,包括添加依赖、配置启动器和YAML设置。

最近在研究springBoot admin项目但是网上最新的版本按照搭建都是不好用的.所以我就自己看官网(http://codecentric.github.io/spring-boot-admin/2.0.2/#_what_is_spring_boot_admin)搭建一下.

 

一、springboot admin 服务端

创建一个Springboot工程

添加依赖,

<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<maven-jar-plugin.version>3.0.0</maven-jar-plugin.version>
		<spring-cloud.version>Greenwich.SR2</spring-cloud.version>
</properties>
<dependencies>
    <dependency>
			<groupId>de.codecentric</groupId>
			<artifactId>spring-boot-admin-starter-server</artifactId>
			<version>2.1.6</version>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boo
at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na] at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:363) ~[spring-beans-5.1.6.RELEASE.jar!/:5.1.6.RELEASE] at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:307) ~[spring-beans-5.1.6.RELEASE.jar!/:5.1.6.RELEASE] at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:136) ~[spring-beans-5.1.6.RELEASE.jar!/:5.1.6.RELEASE] ... 40 common frames omitted Caused by: com.mongodb.MongoQueryException: Query failed with error code 13 and error message 'command find requires authentication' on server localhost:27017 at com.mongodb.operation.FindOperation$1.call(FindOperation.java:707) ~[mongodb-driver-core-3.9.0.jar!/:na] at com.mongodb.operation.FindOperation$1.call(FindOperation.java:696) ~[mongodb-driver-core-3.9.0.jar!/:na] at com.mongodb.operation.OperationHelper.withConnectionSource(OperationHelper.java:462) ~[mongodb-driver-core-3.9.0.jar!/:na] at com.mongodb.operation.OperationHelper.withConnection(OperationHelper.java:406) ~[mongodb-driver-core-3.9.0.jar!/:na] at com.mongodb.operation.FindOperation.execute(FindOperation.java:696) ~[mongodb-driver-core-3.9.0.jar!/:na] at com.mongodb.operation.FindOperation.execute(FindOperation.java:83) ~[mongodb-driver-core-3.9.0.jar!/:na] at com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor.execute(MongoClientDelegate.java:179) ~[mongodb-driver-3.9.0.jar!/:na] at com.mongodb.client.internal.MongoIterableImpl.execute(MongoIterableImpl.java:132) ~[mongodb-driver-3.9.0.jar!/:na] at com.mongodb.client.internal.MongoIterableImpl.iterator(MongoIterableImpl.java:86) ~[mongodb-driver-3.9.0.jar!/:na] at org.springframework.data.mongodb.core.MongoTemplate.executeFindMultiInternal(MongoTemplate.java:2674) ~[spring-data-mongodb-2.1.6.RELEASE.jar!/:2.1.6.RELEASE] ... 74 common frames omitted 是什么意思
最新发布
08-09
<think>这个错误堆栈表明在Spring应用中使用MongoDB时发生了认证失败。核心错误信息是: **`Caused by: com.mongodb.MongoQueryException: Query failed with error code 13 and error message 'command find requires authentication' on server localhost:27017`** ### 错误原因分析: 1. **认证缺失**: MongoDB服务器启用了访问控制(即需要用户名密码登录),但客户端连接时未提供有效凭证。错误代码 `13` 对应 MongoDB 的 "Unauthorized" 错误。 2. **堆栈上下文**: - 应用尝试执行数据库查询(如 `find` 操作)时触发。 - Spring Data MongoDB 的 `MongoTemplate` 在底层调用 MongoDB 驱动时失败。 - 连接地址指向 `localhost:27017`(默认地址),但未通过认证。 ### 解决方案: 1. **检查MongoDB服务配置**: 确认MongoDB是否已启用认证(通常在配置文件中设置 `security.authorization: enabled` 或启动时加 `--auth` 参数)。 2. **配置Spring连接凭证**: 在Spring应用的配置文件中(如 `application.properties`)添加认证信息: ```properties spring.data.mongodb.host=localhost spring.data.mongodb.port=27017 spring.data.mongodb.database=your_db spring.data.mongodb.username=your_user spring.data.mongodb.password=your_password ``` 3. **验证用户权限**: 确保指定用户对目标数据库有查询权限(如 `read` 或 `readWrite` 角色)。 ### 其他可能原因: - 用户名/密码错误。 - 用户角色未分配至目标数据库。 - 连接字符串格式错误(如未指定认证源数据库)。 §§相关问题§§ 1. 如何在MongoDB中创建用户并分配数据库权限? 2. Spring Boot如何配置MongoDB连接字符串(URI格式)包含认证信息? 3. 如何检查MongoDB服务器是否启用了认证模式? 4. 除了认证失败,还有哪些常见原因会导致MongoDB的`command find`操作失败? 5.Spring Data MongoDB中,如何全局捕获并处理`MongoQueryException`异常?</think>这个错误堆栈表明在 Spring 应用中使用 MongoDB 时发生了认证失败。核心错误信息是: **`Caused by: com.mongodb.MongoQueryException: Query failed with error code 13 and error message 'command find requires authentication' on server localhost:27017`** ### 错误原因解析: 1. **认证缺失** MongoDB 服务器启用了访问控制(需要用户名/密码登录),但应用连接时未提供有效凭证。错误代码 `13` 是 MongoDB 的 "Unauthorized" 错误。 2. **操作触发点** - 应用尝试执行 `find()` 查询操作(`FindOperation.execute`) - Spring Data MongoDB 的 `MongoTemplate` 在初始化时触发此操作(`postProcessBeforeInitialization`) - 连接地址为 `localhost:27017`(默认地址) 3. **堆栈层级** - 底层:MongoDB 驱动拒绝未认证的查询(`mongodb-driver-core`) - 中间层:Spring Data MongoDB 操作失败(`spring-data-mongodb`) - 上层:Spring Bean 初始化过程被中断(`spring-beans`) ### 解决方案: 1. **检查 MongoDB 认证配置** - 确认 MongoDB 服务是否启用了 `--auth` 参数或配置了 `security.authorization: enabled` - 验证目标数据库是否存在有效用户(通过 `mongo shell` 执行 `db.getUsers()`) 2. **配置 Spring 连接凭证** 在 `application.properties` 中添加认证信息: ```properties spring.data.mongodb.host=localhost spring.data.mongodb.port=27017 spring.data.mongodb.database=your_db spring.data.mongodb.username=your_user spring.data.mongodb.password=your_password ``` 3. **验证用户权限** 确保用户对目标数据库有 `find` 操作权限(例如分配 `read` 或 `readWrite` 角色)。 ### 常见关联问题: - 如果使用连接字符串,需包含认证数据库: `mongodb://user:pass@localhost:27017/dbname?authSource=admin`
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值