СЭД «ДЕЛО»
Руководство пользователя
×

В.8 Работа с Secret

Позволяет сохранять пароли в AppSettings.
Допустим у нас есть класс с полем Secret:
public class TestPass
    {
        public Secret Password { get; init; }
    }
Тогда работа с паролями может выглядеть так:
// работа с паролями
public async Task SampleMethod(IServiceProvider serviceProvider)
        {
            using var scope = serviceProvider.CreateScope();
            var provider = scope.ServiceProvider;
            var db = provider.GetRequiredService<IDataContext>();
            var appSettingsService = provider.GetRequiredService<IAppSettingsService>();
            var secretStore = provider.GetRequiredService<ISecretStore>();
 
            var userService = provider.GetRequiredService<UserCachingService>();
            var user = await userService.GetUserAsync(3611);
 
            var context = MiddlewareHelper.CreateMutationContext(db, user);
 
            var testPass = new TestPass()
            {
                Password = new Secret()
                {
                    Value = "11111"
                }
            };
            await appSettingsService.SetAsync(testPass, context);
 
            var secretHandler = await appSettingsService.GetAsync<testPass>();
            var pass = await secretStore.GetValueAsync(secretHandler.Password);
        }
Пример SecretSampleClass.cs:
// SecretSampleClass.cs
using Eos.Delo.Platform.Storage.Helpers;
using Eos.Delo.Platform.Storage.Model;
using Eos.Delo.Platform.Storage.Services.Caching;
using Eos.Platform.AppSettings;
using Microsoft.Extensions.DependencyInjection;
using System;
using System.Threading.Tasks;
 
namespace Eos.Delo.Samples.AppSettings.Module
{
    public class SecretSampleClass
    {
        public async Task SampleMethod(IServiceProvider serviceProvider)
        {
            using var scope = serviceProvider.CreateScope();
            var provider = scope.ServiceProvider;
            var db = provider.GetRequiredService<IDataContext>();
            var appSettingsService = provider.GetRequiredService<IAppSettingsService>();
            var secretStore = provider.GetRequiredService<ISecretStore>();
 
            var userService = provider.GetRequiredService<UserCachingService>();
            var user = await userService.GetUserAsync(3611);
 
            var context = MiddlewareHelper.CreateMutationContext(db, user);
 
            var key = await secretStore.SetValueAsync("11111");
            await appSettingsService.SetAsync(new AppSettingsSecret() { Key = key }, context);
 
            var secretHandler = await appSettingsService.GetAsync<AppSettingsSecret>();
            var pass = await secretStore.GetValueAsync(secretHandler);
        }
    }
}
Онлайн помощь создана в Dr.Explain