当前位置: 首页 > news >正文

[已解决]当启动 Spring Boot 应用时出现 Using generated security password xxx提示

当启动 Spring Boot 应用时出现 Using generated security password xxx提示

当启动 Spring Boot 应用时出现 Using generated security password xxx提示,这是 Spring Security 自动配置的默认行为,通常发生在你​​未自定义安全配置​​但引入了 Spring Security 依赖的场景下。以下是详细解释和解决方案:

​原因分析​

Spring Boot 的 spring-boot-starter-security依赖会自动启用基础的安全配置(自动配置类 SecurityAutoConfiguration)。当项目中​​没有显式定义安全过滤器链(SecurityFilterChainBean)​​时,Spring Security 会生成一个​​临时的默认用户​​用于测试,具体规则如下:

  • ​用户名​​:默认是 user(可通过配置修改)。

  • ​密码​​:随机生成(每次启动可能变化),并输出到日志中(即你看到的 xxx)。

  • ​认证方式​​:默认启用 HTTP Basic 认证(访问任何端点需输入用户名+密码)。

​常见场景​

你的项目可能满足以下条件:

  1. 引入了 spring-boot-starter-security依赖(例如 pom.xmlbuild.gradle中包含该依赖)。

  2. 没有手动定义 SecurityFilterChainBean 来覆盖默认配置。

​解决方案​

根据需求选择以下方式之一,避免自动生成临时密码:


​方式 1:通过配置文件自定义用户名和密码(推荐开发环境)​

application.propertiesapplication.yml中显式配置安全用户信息,覆盖默认的随机密码。

​示例(application.properties):​

# 自定义用户名
spring.security.user.name=admin
# 自定义密码(生产环境需用强密码)
spring.security.user.password=123456
# 可选:自定义角色(默认是 ROLE_USER)
spring.security.user.roles=ADMIN

​示例(application.yml):​

spring:security:user:name: adminpassword: 123456roles: ADMIN

配置后重启应用,日志将不再显示随机密码,而是使用你定义的凭证。


​方式 2:完全自定义安全配置(推荐生产环境)​

通过编写 SecurityFilterChainBean 完全覆盖默认配置,灵活控制认证逻辑(如数据库认证、OAuth2 等)。

​示例代码(Java):​

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.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.web.SecurityFilterChain;@Configuration
@EnableWebSecurity
public class SecurityConfig {@Beanpublic SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {http// 配置认证规则(示例:所有请求都需要认证).authorizeHttpRequests(auth -> auth.anyRequest().authenticated())// 配置登录方式(示例:表单登录).formLogin(form -> form.defaultSuccessUrl("/hello", true));return http.build();}
}

此时,Spring Security 不再生成默认用户,你需要通过其他方式(如数据库、内存用户)配置认证信息。例如,添加内存用户:

@Bean
public UserDetailsService userDetailsService() {UserDetails user = User.builder().username("admin").password(new BCryptPasswordEncoder().encode("123456")) // 密码需加密.roles("ADMIN").build();return new InMemoryUserDetailsManager(user);
}

​方式 3:禁用默认安全配置(不推荐)​

如果不需要任何默认安全配置(例如仅想使用其他安全框架),可以通过 @SpringBootApplication(exclude = ...)排除 SecurityAutoConfiguration

​示例:​

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration;@SpringBootApplication(exclude = SecurityAutoConfiguration.class)
public class YourApplication {public static void main(String[] args) {SpringApplication.run(YourApplication.class, args);}
}

​注意​​:此方式会完全禁用 Spring Security,需自行处理所有安全逻辑(风险较高,除非明确需求)。

​生产环境注意事项​

  • ​禁止使用随机密码​​:自动生成的临时密码每次启动会变化,且强度未知,生产环境必须使用​​固定强密码​​(通过配置文件或 UserDetailsService配置)。

  • ​启用 HTTPS​​:默认的 HTTP Basic 认证密码通过明文传输(Base64 编码可解码),必须配合 HTTPS 加密。

  • ​使用更安全的认证方式​​:如 OAuth2、JWT、LDAP 等,避免简单的内存用户或固定密码。

​总结​

Using generated security password是 Spring Security 的默认提示,说明未自定义安全配置。通过配置文件自定义用户或编写 SecurityFilterChainBean 即可解决,生产环境需加强认证安全。

http://www.dtcms.com/a/330472.html

相关文章:

  • OpenCV 视频处理全解析
  • EI学术会议 | 可再生能源、智能电网、电力系统优化、能源存储技术
  • Linux系统Namespace隔离实战:dd/mkfs/mount/unshare命令组合应用
  • 缓存元数据损坏操作步骤(lvmcache修复)
  • 微软推出AI恶意软件检测智能体 Project Ire
  • 截断重要性采样(TIS)在医疗AI大模型训练中的优化路径
  • 嵌入式领域,ROM和RAM的区别
  • pytorch学习笔记-Loss的使用、在神经网络中加入Loss、优化器(optimizer)的使用
  • 基于SpringBoot+Vue的轻手工创意分享平台(WebSocket即时通讯、协同过滤算法、Echarts图形化分析)
  • 依托AR远程协助,沟通协作,高效流畅
  • 七、SpringBoot工程日志设置
  • [前端算法]动态规划
  • 【保姆级教程】CentOS 7 部署 FastDFS 全流程(避坑指南)
  • 【Docker】安装kafka案例
  • 深入解析 Spring IOC 容器在 Web 环境中的启动机制
  • ActiveReports 19.1 Crack
  • 新手向:Python条件语句(if-elif-else)使用指南
  • 初识HTML
  • 云原生俱乐部-k8s知识点归纳(1)
  • AI 编程实践:用 Trae 快速开发 HTML 贪吃蛇游戏
  • 游戏行业DevOps实践:维塔士集团基于Atlassian工具与龙智服务构建全球化游戏开发协作平台
  • LLM 中 语音编码与文本embeding的本质区别
  • 网络流初步
  • 版本更新!FairGuard-Mac加固工具已上线!
  • 【Unity3D实例-功能-移动】角色行走和奔跑的相互切换
  • Unity2022 + URP + Highlight plus V21配置和使用
  • Linux下使用Samba 客户端访问 Samba 服务器的配置(Ubuntu Debian)
  • 一颗TTS语音芯片给产品增加智能语音播报能力
  • 【无标题】卷轴屏手机前瞻:三星/京东方柔性屏耐久性测试进展
  • python自学笔记8 二维和三维可视化