Sdílet prostřednictvím


Autorizace založená na zobrazení v ASP.NET Core MVC

Vývojář často chce zobrazit, skrýt nebo jinak upravit uživatelské rozhraní na základě aktuální identity uživatele. K autorizační službě v zobrazeních MVC můžete přistupovat prostřednictvím injektáže závislostí. K vložení autorizační služby do Razor zobrazení použijte direktivu @inject :

@using Microsoft.AspNetCore.Authorization
@inject IAuthorizationService AuthorizationService

Pokud chcete autorizační službu v každém zobrazení, umístěte @inject direktivu _ViewImports.cshtmlViews do souboru adresáře. Další informace naleznete v tématu Injektáž závislostí do zobrazení.

Použijte autorizační službu vloženou k vyvolání AuthorizeAsync úplně stejným způsobem, jakým byste zkontrolovali při autorizaci na základě prostředků:

@if ((await AuthorizationService.AuthorizeAsync(User, "PolicyName")).Succeeded)
{
    <p>This paragraph is displayed because you fulfilled PolicyName.</p>
}

V některých případech bude prostředek vaším modelem zobrazení. Volat AuthorizeAsync stejným způsobem jako při autorizaci na základě prostředků:

@if ((await AuthorizationService.AuthorizeAsync(User, Model, Operations.Edit)).Succeeded)
{
    <p><a class="btn btn-default" role="button"
        href="@Url.Action("Edit", "Document", new { id = Model.Id })">Edit</a></p>
}

V předchozím kódu se model předává jako prostředek, který by mělo vzít v úvahu vyhodnocení zásad.

Upozorňující

Nespoléhejte na přepínání viditelnosti prvků uživatelského rozhraní vaší aplikace jako jedinou autorizační kontrolu. Skrytí prvku uživatelského rozhraní nemusí zcela zabránit přístupu k přidružené akci kontroleru. Představte si například tlačítko v předchozím fragmentu kódu. Uživatel může vyvolat metodu Edit akce, pokud zná relativní adresu URL prostředku ./Document/Edit/1 Z tohoto důvodu Edit by metoda akce měla provést vlastní autorizační kontrolu.