"Quản lý bí mật người dùng" từ một nhấp chuột phải chỉ có sẵn trong các dự án web.
Có một quá trình hơi khác nhau cho giao diện điều khiển ứng dụng
Nó đòi hỏi tay gõ các yếu tố cần thiết vào tập tin csproj của bạn sau đó thêm bí mật thông qua việc PMC
tôi đã vạch ra quá trình mà làm việc cho tôi trong hiện tại của tôi bước dự án bước trong bài viết trên blog này:
https://medium.com/@granthair5/how-to-add-and-use-user-secrets-to-a-net-core-console-app-a0f169a8713f
tl; dr
Bước 1
Dự án nhấp chuột phải và nhấn chỉnh sửa projectName.csproj
Bước 2
thêm <UserSecretsId>Insert New Guid Here</UserSecretsId>
vào csproj dưới TargetFramework
thêm <DotNetCliToolReference Include="Microsoft.Extensions.SecretManager.Tools" Version="2.0.0"/>
trong mục Nhóm trong csproj
Bước 3
mở PowerShell (admin) cd vào dự án thư mục và
nhập dotnet user-secrets set YourSecretName "YourSecretContent"
Điều này sẽ tạo ra một file secrets.json trong:
%APPDATA%\microsoft\UserSecrets\<userSecretsId>\secrets.json
đâu userSecretsId = Guid mới bạn đã tạo cho csproj bạn
Bước 4
mở bí mật .json và chỉnh sửa để trông giống như thế này
{
"YourClassName":{
"Secret1":"Secret1 Content",
"Secret2":"Secret2 Content"
}
}
Bằng cách thêm tên của lớp học, bạn có thể ràng buộc bí mật của bạn với một đối tượng sẽ được sử dụng.
Tạo một POCO cơ bản có cùng tên mà bạn vừa sử dụng trong JSON của mình.
namespace YourNamespace
{
public class YourClassName
{
public string Secret1 { get; set; }
public string Secret2 { get; set; }
}
}
Bước 5
Thêm Microsoft.Extensions.Configuration.UserSecrets
NuGet gói để dự
Thêm
var builder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddUserSecrets<YourClassName>()
.AddEnvironmentVariables();
&
var services = new ServiceCollection()
.Configure<YourClassName>(Configuration.GetSection(nameof(YourClassName)))
.AddOptions()
.BuildServiceProvider();
services.GetService<NameOfClass>();
Vào tệp Program.cs của bạn.
Sau đó tiêm IOptions<YourClassName>
vào constructor của lớp học của bạn
private readonly YourClassName _secrets;
public SecretConsumer(IOptions<YourClassName> secrets)
{
_secrets = secrets.Value;
}
Sau đó truy cập bí mật bằng cách sử dụng _secrets.Secret1;
Đây là phương pháp mà chúng ta sử dụng quá và nó hoạt động độc đáo. Nó có thêm lợi ích là cách tiếp cận tương thích nhất với sửa chữa (dự kiến) mà đội VS cuối cùng sẽ thực hiện (giả sử nó sẽ hoạt động tương tự như đối với các dự án Web). –