مپ کردن اسرار به یک POCO 🔗
مپ کردن یک آبجکت کامل به یک POCO (یک کلاس ساده #C با پراپرتیها) برای جمعآوری پراپرتیهای مرتبط مفید است.فرض کنید فایل secrets.json برنامه شامل دو سرّ زیر است:
{
"Movies:ConnectionString": "Server=(localdb)\\mssqllocaldb;Database=Movie-1;Trusted_Connection=True;MultipleActiveResultSets=true",
"Movies:ServiceApiKey": "12345"
}کد زیر به یک POCO سفارشی به نام MovieSettings متصل شده و به مقدار پراپرتی ServiceApiKey دسترسی پیدا میکند:
var moviesConfig =
Configuration.GetSection("Movies").Get<MovieSettings>();
var _moviesApiKey = moviesConfig.ServiceApiKey;
اسرار Movies:ConnectionString و Movies:ServiceApiKey به پراپرتیهای مربوطه در MovieSettings مپ میشوند:
public class MovieSettings
{
public string ConnectionString { get; set; }
public string ServiceApiKey { get; set; }
}
جایگزینی رشته با اسرار 🛠️
ذخیره پسوردها به صورت متن ساده ناامن است. پسورد را به عنوان یک سرّ ذخیره کنید و در زمان اجرا آن را به رشته اتصال اضافه کنید.
dotnet user-secrets set "DbPassword" "<secret value>"
using System.Data.SqlClient;
var builder = WebApplication.CreateBuilder(args);
var conStrBuilder = new SqlConnectionStringBuilder(
builder.Configuration.GetConnectionString("Movies"));
conStrBuilder.Password = builder.Configuration["DbPassword"];
var connection = conStrBuilder.ConnectionString;
var app = builder.Build();
app.MapGet("/", () => connection);
app.Run();
📑 دستورات CLI
لیست کردن اسرار list 📋
dotnet user-secrets list
حذف یک سرّ واحد remove 🗑️
dotnet user-secrets remove "Movies:ConnectionString"
حذف تمام اسرار clear ♻️
dotnet user-secrets clear
مدیریت اسرار کاربر با ویژوال استودیو :
برای مدیریت اسرار کاربر در ویژوال استودیو، در Solution Explorer روی پروژه راستکلیک کرده و Manage User Secrets را انتخاب کنید.
اسرار کاربر در اپلیکیشنهای غیر وب 🖥️
برای اپلیکیشنهایی مانند Console App، باید پکیجهای NuGet 📦 زیر را به صورت دستی اضافه کنید:
با استفاده از PowerShell:
Install-Package Microsoft.Extensions.Configuration
Install-Package Microsoft.Extensions.Configuration.UserSecrets
با استفاده از .NET CLI:
dotnet add package Microsoft.Extensions.Configuration
dotnet add package Microsoft.Extensions.Configuration.UserSecrets
پس از نصب پکیجها، پروژه را مقداردهی اولیه کرده و اسرار را همانند یک اپلیکیشن وب تنظیم کنید. مثال زیر یک اپلیکیشن کنسول را نشان میدهد که مقدار یک سرّ را که با کلید "AppSecret" تنظیم شده، بازیابی میکند:
using Microsoft.Extensions.Configuration;
class Program
{
static void Main(string[] args)
{
IConfigurationRoot config = new ConfigurationBuilder()
.AddUserSecrets<Program>()
.Build();
Console.WriteLine(config["AppSecret"]);
}
}