[已解決]當啟動 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.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開…