前言:有很多人將祕鑰,數據庫連接字符串寫到項目配置文件中,並提交到源代碼控制或者共享源代碼控制,並在那裏使用,這使得項目出現了很大的風險。
首先新建一個 ASP.NET Core 的 MVC 項目,就可以直接進行測試。
一、注入 IConfiguration
首先將注入 IConfiguration 並命名爲 Configuration。
在配置文件中並未設置 Key 爲 computername 的屬性,
但是可以根據 @Configuration["computername"]
來獲取當前的PC的名稱。
因爲每臺 Windows 電腦都會創建一個名爲 computername 的環境變量。
將 Index.cshtml 修改爲入下圖所示。
在運行網站後得到的結果如下所示:
二、從配置文件 appsettings.json 中獲取環境變量
在配置文件中加入圖下紅框中的代碼。
將 Index.cshtml 修改爲入下圖所示。
在運行網站後得到的結果如下所示:
三、從項目中獲取環境變量
在解決方案目錄中選中當前 ASP.NET Core Web 項目
按下 Alt + Enter 打開項目屬性面板
或者 右鍵點擊項目 =》 選擇 屬性
隨後選擇調試(Debug)會有看到當前項目的環境變量了
隨後在環境變量裏面添加 先前在 appsetting.json 中添加的值
並且更改掉 appsetting.json 中的 Wechat 的值
在運行網站後得到的結果如下所示:
隨後我們得出結論: appsettings.json 優先級小於
項目的環境變量
四、用戶祕鑰設置環境變量
我們首先刪除掉 項目環境變量中的之前添加的Wechat,環境變量編程如下所示。
隨後右鍵選中項目選擇 管理用戶機密(Manage User Secrets)。
這時打開一個 secrets.json 的新文件,移動鼠標可以看到它的路徑。
當前文件不是一個加密的文件,並且它不是一個在源代碼控制的文件。
隨後在文件 secrets.js 加入代碼如下所示, appsettings.json 文件的Wechat 應如下所示,
項目的環境變量的 Wechat 的值已經被刪掉。
在運行網站後得到的結果如下所示:
隨後我們得出結論: secrets.json 優先級大於
appsettings.json
由於 secrets.json 並不會提交到源代碼控制中,保證了用於開發目的的數據更加安全。