В.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);
}
}
}
|
