我需要检查用户是否具有权限,如果用户没有权限,则菜单项不会出现。
我正在尝试通过@UserManager.GetUserName(User)
进行检查,但是我无法获取身份表中包含的所有数据来查看用户是否具有权限,在下面的示例中,他无法识别单词“ Cidades”。
<ul class="dropdown-menu " role="presentation">
@if (UserManager.GetUserName(User.Cidades) == true)
{
<li><a asp-page="/Cidade/Index">Cidades</a></li>
}
在带有控制器的页面中,我这样做并且效果很好:
ApplicationUser user = await UserManager.GetUserAsync(User);
bool cidade = user.Cidades;
if ( cidade == true)
{
return Page();
}
else
{
return RedirectToPage("/Error");
}
在_Layout.cshtml视图中怎么做才是正确的方法?
答案 0 :(得分:1)
基本上说:
注入授权服务
@inject IAuthorizationService AuthorizationService
按以下步骤使用服务
@if((等待AuthorizationService.AuthorizeAsync(User,“ PolicyName”))。成功) {
显示此段落是因为您符合PolicyName。
}
重要提示:
不要将切换应用程序UI元素的可见性作为唯一的授权检查。