Обложка канала

.NET Разработчик

Опытный разработчик не так давно зашёл в .Net и поставил цель получить сертификат Microsoft. Свой ежедневный прогресс он описывает на канале .Net Разработчик. Заметки об изученном материале, советы по повышению производительности и поддержке мотивации, ин

.NET Разработчик

4 года назад
Открыть в
День 1321. #ЗаметкиНаПолях Получаем Согласие Пользователя Перед Выполнением Конфиденциального Кода Перед выполнением конфиденциальных действий, таких как покупка чего-либо или показ конфиденциальных данных, необходимо получить согласие пользователя. Кроме того, необходимо убедиться, что фактический пользователь является тем, кто выполняет действие. Windows предоставляет API для получения согласия пользователя перед выполнением конфиденциальных действий. Во-первых, нужно указать, что проект нацелен на Windows, установив свойство TargetFramework в файле .csproj:
<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net6.0-windows10.0.17763.0</TargetFramework>
  </PropertyGroup>
</Project>

Теперь вы можете использовать специфический API для Windows, чтобы получить согласие:
using Windows.Security.Credentials.UI;
async Task<bool> ConsentAsync(string reason)
{
  var availability = await
   UserConsentVerifier.CheckAvailabilityAsync();
  
  if (availability ==
    UserConsentVerifierAvailability.Available)
  {
    var result = await
     UserConsentVerifier
      .RequestVerificationAsync(reason);
    
    return result ==
     UserConsentVerificationResult.Verified;
  }

  return false;
}

Также можно использовать метод ConsentAsync перед выполнением действия:
if (await ConsentAsync("Confirm your identity"))
  Console.WriteLine("Cofirmed");
else
  Console.WriteLine("Not confirmed");

Источник: https://www.meziantou.net/getting-user-consent-before-executing-sensitive-code.htm