当启动 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.pswp.cn/bicheng/93729.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/93729.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/93729.shtml

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

相关文章

自动分析需求,PRD 生成只需 SOLO 一步!

资料来源:火山引擎-开发者社区 写不清需求?PRD 难产?开发总跑偏?这些痛点,SOLO 来解决。 TRAE SOLO 是行业首个 Context Engineer。它不止协助编码,更能基于精准上下文理解和工具调用,从构思、…

物联网软件开发过程中,数据流图(DFD),用例图,类图,活动图,序列图,状态图,实体关系图(ERD),BPMN(业务流程建模)详解分析

概述软件开发过程中,特别是在物联网(IoT)场景中,数据流图(DFD)、UML图(包括用例图、类图、活动图、序列图、状态图)、实体关系图(ERD)和业务流程建模&#xf…

Mac(一)常用的快捷键整理

目录1、系统操作与窗口管理2、应用与窗口切换3、常规编辑操作4、文本导航与光标控制✏️5、文本格式与文档功能(支持应用中)6、截图快捷键7、Safari 浏览器快捷键8、Finder 快捷键(文件管理)9、Fn / Globe 功能键(部分…

HAProxy使用方法以及和LVS区别

HAProxy简介HAProxy是法国开发者 威利塔罗(Willy Tarreau) 在2000年使用C语言开发的一个开源软件 是一款具备高并发(万级以上)、高性能的TCP和HTTP负载均衡器 支持基于cookie的持久性,自动故障切换,支持正则表达式及web状态统计LVS 与 HAProxy 的核心区别…

超越“小作文”:大模型指令设计的进阶之路——优化知识信噪比

文章摘要:你是否认为,给大模型的指令(Prompt)写得越详细越好?真的是信息越多,模型就越懂你吗?本文将深入探讨一个反直覺的觀點:初級的指令設計專注於資訊的堆砌,而高階的…

elasticsearch-集成prometheus监控(k8s)

一. 简介: 关于elasticsearch的简介和部署,可以参考单独的文章elasticsearch基础概念与集群部署-CSDN博客,这里就不细说了。这里只讲讲如何在k8s中部署export并基于prometheus做es的指标采集。 二. 实现方式: 首先我们需要先部署…

贪心算法(Greedy Algorithm)详解

一、什么是贪心算法? 贪心算法是一种算法设计范式,指在解决问题时,依赖于每次选择最优的局部解,以期最终得到全局最优解。贪心算法的关键特点是: 局部最优选择:每个阶段选择当前看起来最好的选择&#xff0…

电梯的构造|保养|维修视频全集_电梯安全与故障救援(课程下载)

课程下载:https://download.csdn.net/download/m0_66047725/91699586 电梯原理与维修视频教程 相关简介: 电梯现在运用的非常广泛,比如大型商场,建筑工地,特别是现在建造的很多高楼、商品房,基本都是安装了电梯。电梯维保不力是导致电梯运行中安全事故频发的主要原…

Traefik网关DNS解析超时问题优化

1、背景 在生产环境使用 Traefik 网关时出现了偶发的 DNS 解析超时导致网关与后端服务建立连接异常的情况。通过调用链埋点数据观察发现,该部署环境中 Traefik 的 DNS 解析性能较差,耗时通常在 4ms 以上(正常应该是 1ms 以内) 初…

从0到1掌握 Spring Security(第三篇):三种认证方式,按配置一键切换

> 本文是Spring Security系列第三篇,将带你实现内存、JDBC和自定义三种认证方式的无缝切换,只需修改配置文件即可完成认证策略变更! ## 一、为什么需要多种认证方式? 在软件开发的不同阶段,我们需要不同的认证策略: - **开发阶段**:使用内存认证,快速配置测试账号…

阿里云国际站云防火墙:如何利用阿里云云防火墙实现细粒度的访问控制?

利用阿里云云防火墙实现细粒度的访问控制,可以从分层策略、精确匹配、动态调整三个方面着手,让不同业务、用户和资源的访问权限清晰可控。一、明确控制目标业务隔离:不同业务系统、部门或环境(生产/测试)之间互不干扰。…

rom定制系列------小米cc9机型 原生安卓15系统 双版线刷root 定制修改功能项

小米 9 Lite/CC9 机型代码;pyxis.搭载骁龙710处理器.适用于以下型号的小米机型:M1904F3BG, M1904F3BC. 刷写前提; 需要当前机型已经解锁bl的状态下进入fast模式刷写。此机型可以正常官方解锁与强解bl锁。效果都是一样的。在fast模式下装好联机驱动。使用官方平台刷…

解读60页全面认识大数据基础知识培训【附全文阅读】

该培训课件适用于对大数据知识感兴趣的初学者、企业管理人员、相关技术从业者等。内容围绕大数据展开,先介绍其基本概念,包括定义、数据级别、来源、类型、价值挖掘等,还阐述了 5 个 “V” 特征及与传统数据的区别。接着讲述大数据的发展演进,涵盖国际国内发展历程、发展阶…

Prompt engineering(PE) —— prompt 优化如何进行?

从新手到高手:Prompt最佳实践全解析 一、引言:开启 Prompt 的神秘大门在这个人工智能飞速发展的时代,AI 已经悄然融入我们生活的方方面面。你是否有过这样的经历: 当你对着智能音箱询问 “明天天气如何” 时,它能迅速给…

云服务器的优缺点都有哪些?

云服务器作为一种有着高度灵活性的服务器类型,能够根据用户的需求来调整资源,有着很强的优势,但是云服务器还是有着一定的缺点的,本文就来共同探讨一下云服务器的优缺点都有哪些吧!首先,云服务器能根据业务…

宋红康 JVM 笔记 Day05|运行时数据区内部结构、JVM中的线程说明、程序计数器

一、今日视频区间 P39-P43 二、一句话总结 运行时数据区内部结构;JVM中的线程说明;程序计数器(PC寄存器); 三、关键图/命令 3.1 运行时数据区内部结构3.2 JVM中的线程说明3.3 程序计数器(PC寄存器&#xff…

Java增强for循环(小白友好版)

前言&#xff1a;为什么需要增强for循环&#xff1f;作为Java初学者&#xff0c;你或许已经学会使用传统for循环来遍历数组或集合&#xff1a;for (int i 0; i < array.length; i) {System.out.println(array[i]); }这种写法需要手动维护索引变量i&#xff0c;对于集合还需…

【OLAP】trino安装和基本使用

目录 ​一、概述 1.1Trino不是什么 1.2Trino是什么 二、Trino特点 三、Trino架构 3.1架构和服务节点 3.2Trino数据模型 四、Trino安装部署 4.1配置JDK 4.2单机版&#xff08;Coordinator和Worker同进程&#xff09; 4.2.1启动服务 4.2.2下载客户端 五、配置HTTPS&…

如何写出更清晰易读的布尔逻辑判断?

列编码技巧和规范&#xff0c;来降低逻辑的“认知负荷”。成功的实践&#xff0c;必须系统性地涵盖五大关键策略&#xff1a;采用有意义的变量名进行封装、将复杂的判断拆解为独立的函数、优先使用“肯定式”而非“否定式”逻辑、利用括号明确运算的优先级、以及运用德摩根定律…

新手向:Java方向讲解

从诺基亚塞班到阿里双11&#xff0c;从安卓应用到华尔街交易&#xff0c;Java用一行System.out.println()征服了数字世界1998年&#xff0c;诺基亚在塞班系统上首次采用Java ME技术&#xff0c;让手机具备了运行应用程序的能力&#xff0c;开启了移动互联网的序幕。当时的Java开…