Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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.cshtml
Views
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.