• 从零开始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。

  • 相关阅读:
    2024三掌柜赠书活动第十六期:AI时代Python金融大数据分析实战
    tomcat启动jvm内存设置
    javaweb医院科室管理系统springboot
    基于智能优化算法的交通流模拟器(Matlab代码实现)
    哈工大李治军老师操作系统笔记【23】:内存换出(Learning OS Concepts By Coding Them !)
    bison使用error死循环的记录
    MyBatis练习3
    vxe-table添加排序
    FreeRTOS学习笔记-基于stm32(8)信号量总结(二值信号量、计数型信号量、互斥信号量、优先级翻转、优先级继承)
    金色传说:SAP-QM-周期性检验:MSC1N/MSC2N/MSC3N下一次检验日期逻辑问题
  • 原文地址:https://www.cnblogs.com/j4587698/p/16554744.html