You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular项目中SQL Server数据库连接字符串的安全配置问题

解决方案:保密连接字符串并实现环境适配

一、先修正配置的核心问题

你的代码里用builder.Configuration.GetConnectionString("ConnectionString")读取连接字符串,但现有配置存在两个错误:

  • 键名不匹配:配置里用的是CS/Devstring,和代码里的ConnectionString不一致
  • 层级错误:appsettings.Development.json里把ConnectionStrings嵌套在了Authentication节点下,GetConnectionString只会读取根节点下的ConnectionStrings

修正后的基础配置文件

appsettings.json(通用公共配置)

只放无敏感信息的基础配置,敏感项留占位符:

{
  "AllowedHosts": "*",
  "ConnectionStrings": {
    "ConnectionString": ""
  }
}

appsettings.Development.json(本地开发非敏感配置)

只放本地开发的公开配置,敏感连接字符串不要写在这里:

{
  "Authentication": {
    "ClientId": "Client",
    "AllowedHosts": [
      "localhost",
      "localhost:5000",
      "localhost:5001"
    ],
    "Attempts": 3
  }
}

二、本地开发:用DotNet用户机密存敏感信息

本地开发时,绝对不要把连接字符串写在配置文件里,用用户机密隔离敏感数据:

  1. 打开项目根目录的终端,执行命令初始化用户机密:
dotnet user-secrets init
  1. 再执行命令添加连接字符串到用户机密:
dotnet user-secrets set "ConnectionStrings:ConnectionString" "Server=tcp:DB.database.windows.net,1433;Initial Catalog=DBNAME;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;Authentication=Active Directory Default;"

用户机密存储在本地非Git追踪的目录,不会被提交到代码仓库,ASP.NET Core会自动加载它覆盖appsettings里的占位符。

三、线上部署(Azure应用服务):用门户配置注入敏感信息

Azure部署时,直接在门户配置连接字符串,完全不需要依赖本地配置文件:

  1. 登录Azure门户,进入你的应用服务
  2. 左侧菜单选配置 > 连接字符串
  3. 添加新条目:名称填ConnectionString,值填你的Azure SQL连接字符串,类型选SQLServer
  4. 保存后,Azure会自动将这个连接字符串注入到应用的Configuration中,和你本地用GetConnectionString读取的逻辑完全一致,全程不会暴露在代码或配置文件里。

另外注意你的前端API配置里production: false,上线时要改成true,确保API地址指向正确的线上端点。

四、环境优先级说明

ASP.NET Core会自动按优先级加载配置:

  • 本地开发:用户机密 > appsettings.Development.json > appsettings.json
  • 线上部署:Azure应用服务配置 > appsettings.json

这样既保证敏感信息不泄露,又能让本地和线上环境自动适配正确的配置。

内容的提问来源于stack exchange,提问作者user23641408

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 03:13:14