根据ASP.NET Core中的权限隐藏菜单

时间:2018-07-19 13:20:28

标签: asp.net asp.net-core asp.net-core-2.0

我需要检查用户是否具有权限,如果用户没有权限,则菜单项不会出现。

我正在尝试通过@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视图中怎么做才是正确的方法?

1 个答案:

答案 0 :(得分:1)

使用View-bsed authorization

基本上说:

  1. 注入授权服务

    @inject IAuthorizationService AuthorizationService

  2. 按以下步骤使用服务

    @if((等待AuthorizationService.AuthorizeAsync(User,“ PolicyName”))。成功) {

    显示此段落是因为您符合PolicyName。

    }

重要提示:

  

不要将切换应用程序UI元素的可见性作为唯一的授权检查。