Autorização baseada em modo de exibição no MVC ASP.NET Core
Um desenvolvedor geralmente deseja mostrar, ocultar ou modificar uma interface do usuário com base na identidade do usuário atual. Você pode acessar o serviço de autorização nos modos de exibição do MVC por meio da injeção de dependência. Para injetar o serviço de autorização em um modo de exibição Razor, use a diretiva @inject
:
@using Microsoft.AspNetCore.Authorization
@inject IAuthorizationService AuthorizationService
Se você quiser o serviço de autorização em todos os modos de exibição, coloque a diretiva @inject
no arquivo _ViewImports.cshtml
do diretório Modos de exibição . Para obter mais informações, consulte Injeção de dependência em exibições.
Use o serviço de autorização injetado para invocar AuthorizeAsync
exatamente da mesma maneira que você verificaria durante a autorização baseada em recursos:
@if ((await AuthorizationService.AuthorizeAsync(User, "PolicyName")).Succeeded)
{
<p>This paragraph is displayed because you fulfilled PolicyName.</p>
}
Em alguns casos, o recurso será seu modelo de exibição. Invoque AuthorizeAsync
exatamente da mesma maneira que você verificaria durante a autorização baseada em recursos:
@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>
}
No código anterior, o modelo é passado como um recurso que a avaliação da política deve levar em consideração.
Aviso
Não confie na visibilidade dos elementos da interface do usuário do aplicativo como a única autorização marcar. Ocultar um elemento de interface do usuário pode não impedir completamente o acesso à ação do controlador associado. Por exemplo, considere o botão no snippet de código anterior. Um usuário poderá invocar o método de ação Edit
se souber que a URL do recurso relativo é /Document/Edit/1. Por esse motivo, o método de ação Edit
deve executar sua própria verificação de autorização.
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de