bom dia
Gostaria de saber como posso incluir um [ Authorize] diretamente no Layout.cshtml. Obs: AspnetCore
Dentro da view Layout.cshtml tenho 2 menus, configurações e tabelas principais, o "admin" ve tudo, o gerente só ve o tabelas principais e o "basico" só ve o item prospect do mune tabelas principais.
@using Microsoft.AspNetCore.Identity
@inject SignInManager<IdentityUserModel> SignInManager
@inject UserManager<IdentityUserModel> UserManager
<ul class="navbar-nav">
@if (SignInManager.IsSignedIn(User))
{
if (User.IsInRole("Administrador"))
{
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button"
data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Configurações
</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
<a class="nav-link text-dark" asp-area="" asp-controller="" asp-action="">Parâmetros Gerais</a>
<a class="nav-link text-dark" asp-area="" asp-controller="Usuarios" asp-action="Index">Gerenciador de Usuários</a>
</div>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button"
data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Tabelas Principais
</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
<a class="nav-link text-dark" asp-area="" asp-controller="Prospect" asp-action="Index">Prospects</a>
<a class="nav-link text-dark" asp-area="" asp-controller="Cliente" asp-action="Index">Cliente</a>
</div>
</li>
}
<li class="nav-item">
<a class="nav-link text-dark" asp-area="Identity" asp-page="/Account/Manage/Index" title="Manage">Olá @User.Identity.Name!</a>
</li>
<li class="nav-item">
<form class="form-inline" asp-area="Identity" asp-page="/Account/Logout" asp-route-returnUrl="@Url.Action("Index", "Home", new { area = "" })">
<button type="submit" class="nav-link btn btn-link text-dark">Sair</button>
</form>
</li>
}
else
{
<li class="nav-item">
<a class="nav-link text-dark" asp-area="Identity" asp-page="/Account/Register">Registrar</a>
</li>
<li class="nav-item">
<a class="nav-link text-dark" asp-area="Identity" asp-page="/Account/Login">Login</a>
</li>
}
</ul>
Com o autorize eu poderia dizer qual parte do código as três entidades podem visualizar e assim por diante. Usei inicialmente o User.IsInRole("Administrador") mas se eu colocar o mesmo código mudando o parâmetro em outro lugar o administrador não terá acesso.