Asp.Net Core MVC在View中,根据用户权限动态生成菜单

1.   用户登录时,将用户的权限写入Cookie;

1 //将需要的信息写入claims后
2 var identity = new ClaimsIdentity(claims, IdentityConstants.ApplicationScheme);
3 var userPrincipal = new ClaimsPrincipal(identity);
4 await HttpContext.SignInAsync(IdentityConstants.ApplicationScheme, userPrincipal);

2.  View中,利用bootstraptreeview显示菜单,使用User.IsInRole等判断是否有相关权限,进而确定是否需要显示该部分的菜单

//部分代码
<div id="leftmenu"></div>
<script>
    var tree = new Array();
    @if (User.IsInRole("**")||(User.HasClaim("单位","***")&&User.IsInRole("部门管理员")))
    {
        <text>
            tree.push({
                text: "***",
                selectable: false,
                nodes:
                    [
                        {
                            text: "***",
                            selectable: false,
                            nodes:
                                [
                                    {
                                        text: "***",
                                        href: "***",
                                    },
                                    。。。
                                ],
                        },
                        {
                            text: "***",
                            selectable: false,
                            nodes:
                                [
                                    {
                                        text: "当班清单",
                                        href: "/Spectroes/Index",
                                    },
                                    。。。
                                ],
                        },
                        @if (User.IsInRole("部门管理员"))
                        {
                            <text>
                                {
                                    text: "审核上传",
                                    href: "Audities",
                                    selectable: true,
                                },
                                。。。。
                            </text>
                        }
                    ]
            });
        </text>
    }

    @if (User.IsInRole("超级管理员"))
    {
        <text>
            tree.push(
                    {
                        text: "***",
                        selectable: false,
                        nodes:
                            [
                                {
                                    text: "***",
                                    selectable: false,
                                    href: "***",
                                },
                            ]
                    },
        </text>
    }
    $('#leftmenu').treeview({
        data: tree,
        icon: "glyphicon glyphicon-stop",
        color: "#000000",
        backColor: "#FFFFFF",
        collapseIcon: "glyphicon glyphicon-minus",
        checkedIcon: "glyphicon glyphicon-check",
        levels: 1,
        enableLinks: true,
        showBorder: false,
    });
</script>            
原文地址:https://www.cnblogs.com/jqdy/p/11655938.html