• 从零开始Blazor Server(8)--增加菜单以及调整位置


    这篇干啥

    这篇文章主要是把前面的一些东西稍微调整一下,使其更适合后面的内容。


    主要是两个事,一个是把原来的PermissionEntity直接变成MenuEntity,直接让最后一级是菜单,这样后面就简单很多。


    另外增加一些默认的菜单为后面的文章做准备。


    另外就是调整一下Pages里面的目录结构,让我们不用每个页面都去加@attribute [Authorize]

    处理目录结构

    之前的内容里,我们最后还是用了Furion自带的方法来处理成策略授权了,所以我们正常的话需要每个页面都加上@attribute [Authorize]

    但是这样太麻烦了,幸好微软给我们提供了一个_Imports.razor的东西,这个文件是目录级的,我们可以在某层目录下添加,然后此目录和它的子目录都会受影响。


    所以我们就需要把Login和其他的页面分开,因为我们的Login页面是不需要登录的,而且分开以后更清晰。


    这里在Pages下面新建两个目录,一个叫Account,一个叫Admin。这里把Login.razor放到Account目录下,把其他的razor文件都放到Admin下面。

    这里注意不要移动那两个cshtml文件,因为那两个文件的位置如果改变还需要改变很多其他的东西。

    然后在Admin目录下新建一个_Imports.razor,内容为:

    @attribute [Authorize]

    这样,所有的Admin目录下的页面都会受到影响,需要权限验证。

    修改MenuEntity

    在之前,我们是做了个PermissionEntity,里面只记录了权限信息,但是这样就还需要一套菜单系统,然后还要根据Url来进行匹配,就太麻烦了一点,所以这里我们直接把菜单系统和权限系统合起来,把PermissionEntity改为MenuEntity,并且增加IconParentId用于菜单使用。


    修改后的MenuEntity如下:

    [Description("菜单表")]
    public class MenuEntity: BaseEntity<MenuEntity, int>
    {
        [Description("菜单名")]
        public string? Name { get; set; }
    
        [Description("菜单图标")]
        public string? Icon { get; set; }
    
        [Description("对应页面Url")]
        public string? Url { get; set; }
    
        [Description("父菜单ID")]
        public int ParentId { get; set; }
    
        [Navigate(nameof(ParentId))]
        public MenuEntity? Parent { get; set; }
    
        [Navigate(nameof(ParentId))]
        public List? Children { get; set; }
        
        [Description("角色")]
        [Navigate(ManyToMany = typeof(RoleMenuEntity))]
        public virtual ICollection? Roles { get; set; }
    }

    同时我们增加一部分菜单项到DbExtension,这块代码就不贴了,直接去github看把。


    源码在github:https://github.com/j4587698/BlazorLearn,分支lesson8。

  • 相关阅读:
    Qt之mouseMoveEvent不点击鼠标也能捕获鼠标位置
    为什么emplace_back比push_back更快?快是有条件的
    Java_泛型 详解总结 (精心打磨多次,一篇看懂泛型)
    net基于asp.net的计算机网络课程题库系统-计算机毕业设计
    一次搞定:借助Hutool封装代码快速解决webservice调用烦恼
    Flutter视图原理之三棵树的建立过程
    怎么给图片加水印?四个操作步骤
    “嵌入式智能化”为医疗设备不断赋能
    zemax简单非序列光学系统
    【控制】模型预测控制,公式推导,数值仿真,有程序有图
  • 原文地址:https://www.cnblogs.com/j4587698/p/16554744.html