我们最后一步就是构建前端需要获取系统菜单数据,本节就是定义一份模拟数据。
需要在授权策略PermissionRequirement中添加一个对于/api/permission/getmenu接口的访问权限
public class PermissionRequirement: IAuthorizationRequirement
{
public bool Vaild(string username, string path)
{
path = path.ToLower();
if (path == "/api/auth/requesttoken")
{
return true;
}
if (string.IsNullOrEmpty(username))
return false;
//用户temp只能访问/api/weather/v1
if (username == "temp" && path == "/api/weather/v1" )
{
return true;
}
//用户admin能访问的接口路径
if (username == "admin" &&
(path == "/api/weather/v" || path == "/api/weather/v1" ||
path == "/api/permission/getmenu" ))
{
return true;
}
return false;
}
}
定义一个系统菜单数据结构
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.Text.Json.Serialization;
using System.Threading.Tasks;
namespace RazorPagesMovie.Models
{
public class SystemMenuItem
{
public SystemMenuItem()
{
ChildMenus = new List<SystemMenuItem> { };
IsTopMenu = false;
}
/// <summary>
/// 菜单URL
/// </summary>
[JsonPropertyName("url")]
public string Url { get; set; }
/// <summary>
/// 菜单名称
/// </summary>
[JsonPropertyName("title")]
public string MenuName { get; set; }
/// <summary>
/// 菜单父节点ID
/// </summary>
[JsonPropertyName("parentIndex")]
public string ParentMenuId { get; set; }
/// <summary>
/// 菜单ID
/// </summary>
[JsonPropertyName("index")]
public string MenuId { get; set; }
/// <summary>
/// 菜单图标
/// </summary>
[JsonPropertyName("icon")]
public string Icon { get; set; }
/// <summary>
/// 是否是顶层菜单
/// </summary>
[JsonPropertyName("topMenu")]
public bool IsTopMenu { get; set; }
/// <summary>
/// 加载VUE的组件
/// </summary>
[JsonPropertyName("component")]
public string Component { get; set; }
/// <summary>
/// 子菜单
/// </summary>
[JsonPropertyName("childItems")]
public List<SystemMenuItem> ChildMenus { get; set; }
}
}
using Microsoft.AspNetCore.Mvc;
using RazorPagesMovie.Control;
using RazorPagesMovie.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace RazorPagesMovie.Permission
{
[Route("api/permission")]
public class PermissionController : BaseController
{
[HttpGet, Route("getmenu")]
public WebResponseContent SystemMenu()
{
List<SystemMenuItem> menus = new List<SystemMenuItem>();
var m1=new SystemMenuItem { Icon = "user", IsTopMenu = true, MenuId = "gcgl", MenuName = "工程管理" };
var m2=new SystemMenuItem { Icon = "appstore", IsTopMenu = true, MenuId = "xtyj", MenuName = "系统预警" };
var m3=new SystemMenuItem { Icon = "mail", IsTopMenu = true, MenuId = "tjfx", MenuName = "统计分析" };
var m4=new SystemMenuItem { Icon = "skype", IsTopMenu = true, MenuId = "xtgl", MenuName = "系统管理" };
BulidMenu1(m1);
BulidMenu2(m2);
BulidMenu3(m3);
BulidMenu4(m4);
menus.Add(m1);
menus.Add(m2);
menus.Add(m3);
menus.Add(m4);
return WebResponseContent.GetResult(menus);
}
private void BulidMenu1(SystemMenuItem menu)
{
var childMenu= new SystemMenuItem { Icon = "team", ParentMenuId=menu.MenuId, MenuId =Guid.NewGuid().ToString(),
MenuName = "合同管理"
};
childMenu.ChildMenus.Add(new SystemMenuItem
{
ParentMenuId = childMenu.MenuId,
MenuName = "管线合同",
MenuId = "test1",
Url = "/test1_s",
Component= "test.vue"
});
childMenu.ChildMenus.Add(new SystemMenuItem
{
ParentMenuId = childMenu.MenuId,
MenuName = "其它合同",
MenuId = "test2",
Url = "/test2",
Component = "test1.vue"
});
childMenu.ChildMenus.Add(new SystemMenuItem
{
ParentMenuId = childMenu.MenuId,
MenuName = "单项合同",
MenuId = "test3",
Url = "/test3",
Component = "test2.vue"
});
menu.ChildMenus.Add(new SystemMenuItem
{
Icon = "shake",
ParentMenuId = menu.MenuId,
MenuId = Guid.NewGuid().ToString(),
MenuName = "项目交接"
});
menu.ChildMenus.Add(new SystemMenuItem
{
Icon = "link",
ParentMenuId = menu.MenuId,
MenuId = Guid.NewGuid().ToString(),
MenuName = "管线工程"
});
menu.ChildMenus.Add(new SystemMenuItem
{
Icon = "safety",
ParentMenuId = menu.MenuId,
MenuId = Guid.NewGuid().ToString(),
MenuName = "合同借阅"
});
menu.ChildMenus.Add(childMenu);
}
private void BulidMenu2(SystemMenuItem menu)
{
menu.ChildMenus.Add(new SystemMenuItem
{
Icon = "setting",
ParentMenuId = menu.MenuId,
MenuId = Guid.NewGuid().ToString(),
MenuName = "进度预警"
}); menu.ChildMenus.Add(new SystemMenuItem
{
Icon = "shop",
ParentMenuId = menu.MenuId,
MenuId = Guid.NewGuid().ToString(),
MenuName = "应开未开"
}); menu.ChildMenus.Add(new SystemMenuItem
{
Icon = "link",
ParentMenuId = menu.MenuId,
MenuId = Guid.NewGuid().ToString(),
MenuName = "应完未完"
}); menu.ChildMenus.Add(new SystemMenuItem
{
Icon = "idcard",
ParentMenuId = menu.MenuId,
MenuId = Guid.NewGuid().ToString(),
MenuName = "工程变更"
});
}
private void BulidMenu3(SystemMenuItem menu)
{
menu.ChildMenus.Add(new SystemMenuItem
{
Icon = "gift",
ParentMenuId = menu.MenuId,
MenuId = Guid.NewGuid().ToString(),
MenuName = "月度报表"
}); menu.ChildMenus.Add(new SystemMenuItem
{
Icon = "hdd",
ParentMenuId = menu.MenuId,
MenuId = Guid.NewGuid().ToString(),
MenuName = "合同汇总"
}); menu.ChildMenus.Add(new SystemMenuItem
{
Icon = "link",
ParentMenuId = menu.MenuId,
MenuId = Guid.NewGuid().ToString(),
MenuName = "动态资金"
}); menu.ChildMenus.Add(new SystemMenuItem
{
Icon = "contacts",
ParentMenuId = menu.MenuId,
MenuId = Guid.NewGuid().ToString(),
MenuName = "造价汇总"
});
}
private void BulidMenu4(SystemMenuItem menu)
{
menu.ChildMenus.Add(new SystemMenuItem
{
Icon = "audio",
ParentMenuId = menu.MenuId,
MenuId = Guid.NewGuid().ToString(),
MenuName = "人员管理"
}); menu.ChildMenus.Add(new SystemMenuItem
{
Icon = "bank",
ParentMenuId = menu.MenuId,
MenuId = Guid.NewGuid().ToString(),
MenuName = "角色管理"
}); menu.ChildMenus.Add(new SystemMenuItem
{
Icon = "link",
ParentMenuId = menu.MenuId,
MenuId = Guid.NewGuid().ToString(),
MenuName = "菜单管理"
}); menu.ChildMenus.Add(new SystemMenuItem
{
Icon = "alert",
ParentMenuId = menu.MenuId,
MenuId = Guid.NewGuid().ToString(),
MenuName = "日志管理"
});
}
}
}