Megosztás a következőn keresztül:


Az EU általános adatvédelmi rendeletének (GDPR) támogatása ASP.NET Core Blazor

Jegyzet

Ez nem a cikk legújabb verziója. Az aktuális kiadást a jelen cikk .NET 9-es verziójában.

Figyelmeztetés

A ASP.NET Core ezen verziója már nem támogatott. További információ: .NET és .NET Core támogatási szabályzat. Az aktuális kiadást a jelen cikk .NET 9-es verziójában.

Fontos

Ezek az információk egy olyan előzetes termékre vonatkoznak, amelyet a kereskedelmi forgalomba kerülés előtt jelentősen módosíthatnak. A Microsoft nem vállal kifejezett vagy hallgatólagos szavatosságot az itt megadott információkra vonatkozóan.

Az aktuális kiadást a jelen cikk .NET 9-es verziójában.

Ez a cikk azt ismerteti, hogyan valósíthatja meg a támogatást az általános adatvédelmi rendelet (GDPR) követelményeinek teljesítéséhez.

A Program fájlban:

builder.Services.Configure<CookiePolicyOptions>(options =>
{
    options.CheckConsentNeeded = context => true;

    options.MinimumSameSitePolicy = SameSiteMode.None;
});

builder.Services.AddHttpContextAccessor();

A Program fájlban a MapRazorComponentshívása előtt adja hozzá Cookie Policy Middleware-t a UseCookiePolicymeghívásával:

A Program fájlban a MapBlazorHubhívása előtt adja hozzá Cookie Policy Middleware-t a UseCookiePolicymeghívásával:

app.UseCookiePolicy();

Adja hozzá a következő CookieConsent összetevőt a cookie hozzájárulási házirend kezeléséhez.

Az összetevő egy csoportosított JavaScript-fájlt használCookieConsent.razor.jsnevű modul betöltéséhez. Erősítse meg vagy módosítsa az csoportosított fájl elérési útját a OnAfterRenderAsync metódusban. Az alábbi összetevő feltételezi, hogy az összetevő és a hozzá tartozó JavaScript-fájl az alkalmazás Components mappájában található.

CookieConsent.razor:

@using Microsoft.AspNetCore.Http.Features
@using Microsoft.AspNetCore.Http
@implements IAsyncDisposable
@inject IHttpContextAccessor Http
@inject IJSRuntime JS

@if (showBanner)
{
    <div id="cookieConsent" class="alert alert-info alert-dismissible fade show" 
        role="alert">
        Use this space to summarize your privacy and cookie use policy.
        <a href="/privacy">Privacy Policy</a>
        <button type="button" @onclick="AcceptPolicy" class="accept-policy close" 
            data-bs-dismiss="alert" aria-label="Close" 
            data-cookie-string="@cookieString">
            Accept
        </button>
    </div>
}
@code {
    private IJSObjectReference? module;
    private ITrackingConsentFeature? consentFeature;
    private bool showBanner;
    private string? cookieString;

    protected override void OnInitialized()
    {
        consentFeature = Http.HttpContext?.Features.Get<ITrackingConsentFeature>();
        showBanner = !consentFeature?.CanTrack ?? false;
        cookieString = consentFeature?.CreateConsentCookie();
    }

    protected override async Task OnAfterRenderAsync(bool firstRender)
    {
        if (firstRender)
        {
            module = await JS.InvokeAsync<IJSObjectReference>("import",
                "./Components/CookieConsent.razor.js");
        }
    }

    private async Task AcceptPolicy()
    {
        if (module is not null)
        {
            await module.InvokeVoidAsync("acceptPolicy", cookieString);
            showBanner = false;
        }
    }

    async ValueTask IAsyncDisposable.DisposeAsync()
    {
        if (module is not null)
        {
            try
            {
                await module.DisposeAsync();
            }
            catch (JSDisconnectedException)
            {
            }
        }
    }
}

Adja hozzá a következő összekapcsolt JavaScript-fájlt a JavaScript-modulban lévő acceptPolicy függvény fenntartásához.

CookieConsent.razor.js:

export function acceptPolicy(cookieString) {
  document.cookie = cookieString;
}

A <main> összetevő (Razor) MainLayoutMainLayout.razor jelölésén belül adja hozzá a CookieConsent összetevőt:

<CookieConsent />

Adja meg a cookie hozzájárulási értéket úgy, hogy egy egyéni sztringet rendel hozzá CookiePolicyOptions.ConsentCookieValue. Az alábbi példa a "yes" alapértelmezett értékét "true" értékre módosítja:

options.ConsentCookieValue = "true";

Az Blazor WebAssembly alkalmazásokban a helyi tárhely kényelmes módszer a felhasználói hozzájárulás megtartására a webhely cookie szabályzatához. Az alábbi megközelítés bemutatja a megközelítést.

Ha az alkalmazás még nem rendelkezik Shared mappával a megosztott összetevőkhöz, adjon hozzá egy Shared mappát az alkalmazáshoz.

Adja hozzá a megosztott összetevők névterét a _Imports.razor fájlhoz. Az alábbi példában az alkalmazás névtere BlazorSample, a megosztott mappa névtere pedig BlazorSample.Shared:

@using BlazorSample.Shared

Adja hozzá a következő CookieConsent összetevőt a cookie hozzájárulási házirend kezeléséhez.

Shared/CookieConsent.razor:

@implements IAsyncDisposable
@inject IJSRuntime JS

@if (showBanner)
{
    <div id="cookieConsent" class="alert alert-info alert-dismissible fade show"
        role="alert">
        Use this space to summarize your privacy and cookie use policy.
        <a href="/privacy">Privacy Policy</a>
        <button type="button" @onclick="AcceptPolicy" class="accept-policy close"
            data-bs-dismiss="alert" aria-label="Close">
            <span aria-hidden="true">Accept</span>
        </button>
    </div>
}
@code {
    private IJSObjectReference? module;
    private bool showBanner = false;

    protected override async Task OnAfterRenderAsync(bool firstRender)
    {
        if (firstRender)
        {
            module = await JS.InvokeAsync<IJSObjectReference>("import",
                "./Shared/CookieConsent.razor.js");
            showBanner = !await module.InvokeAsync<bool>("getCookiePolicyAccepted");
            StateHasChanged();
        }
    }

    private async Task AcceptPolicy()
    {
        if (module is not null)
        {
            await module.InvokeVoidAsync("setCookiePolicyAccepted");
            showBanner = false;
        }
    }

    async ValueTask IAsyncDisposable.DisposeAsync()
    {
        if (module is not null)
        {
            try
            {
                await module.DisposeAsync();
            }
            catch (JSDisconnectedException)
            {
            }
        }
    }
}

Adja hozzá a hozzárendelt JavaScript-fájlt a JavaScript-modul setCookiePolicyAccepted és getCookiePolicyAccepted függvényeinek fenntartásához.

Shared/CookieConsent.razor.js:

export function getCookiePolicyAccepted() {
  const cookiePolicy = localStorage.getItem('CookiePolicyAccepted');
  return cookiePolicy === 'yes' ? true : false;
}

export function setCookiePolicyAccepted() {
  localStorage.setItem('CookiePolicyAccepted', 'yes');
}

Az előző példában a helyi tárolóelem nevét és értékét a "CookiePolicyAccepted" és a "yes" értékről tetszőleges értékre módosíthatja. Ha módosít egy vagy mindkét értéket, frissítse mindkét függvényt.

A <main> összetevő (Razor) MainLayoutLayout/MainLayout.razor jelölésén belül adja hozzá a CookieConsent összetevőt:

<CookieConsent />

További erőforrások