0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有

1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端

2 Asp.Net Core 项目实战之权限管理系统(2) 功能及实体设计

3 Asp.Net Core 项目实战之权限管理系统(3) 通过EntityFramework Core使用PostgreSQL

4 Asp.Net Core 项目实战之权限管理系统(4) 依赖注入、仓储、服务的多项目分层实现

5 Asp.Net Core 项目实战之权限管理系统(5) 用户登录

6 Asp.Net Core 项目实战之权限管理系统(6) 功能管理

7 Asp.Net Core 项目实战之权限管理系统(7) 组织机构、角色、用户权限

8 Asp.Net Core 项目实战之权限管理系统(8) 功能菜单的动态加载

github源码地址

前面已经完成项目基本框架搭建及功能菜单管理的具体功能实现,接下来要实现的组织机构管理、用户管理、角色权限管理基本实现方法类似,基本实现步骤如下:

0 仓储接口定义

在Fonour.Domain项目的IRepositories文件夹下创建继承自泛型接口IRepository<T>的仓储接口,根据实际情况进行接口扩展。

1 仓储操作实现

在Fonour.EntityFrameworkCore项目的Repositories文件夹下对上面定义的接口进行实现

2 定义Dto及创建与实体的映射关系

在Fonour.Application项目中按照功能管理的实现方式,创建对应的Dto类,同时在FonourMapper.cs中增加创建的Dto与具体的实体之间映射关系。

3 定义服务接口及实现

在Fonour.Application中按照实际需要定义应用服务接口及对应实现。

4 创建Controller,实现Action

在Fonour.MVC项目中增加对应业务功能的控制器,以及对应操作的Action。

5 前端操作实现

使用AdminLTE,结合ajax操作实现前端相关。

上述操作,可结合代码生成器进行自动生成,会大大增加开发效率。

0 组织机构管理

组织机构管理与功能管理非常类似,都是简单的单表增删改查操作,在界面布局上也一样,左侧为组织机构树,右侧为选中节点对应的子级组织机构列表。同样包含新增顶级、新增、删除、编辑等操作。只需要按照上面介绍的实现步骤,逐步去实现即可,最终效果如下:

1 角色管理

页面布局设计为,左侧为角色列表,右侧为功能树,单击左侧角色列表时,对已经关联的功能进行勾选显示;同时可在右侧直接修改选中项,对当前角色进行功能权限的调整。

1.0 列表选中事件添加

没有使用table插件,简单的对选中的tr增加click事件处理,单击的tr进行颜色改变,同时清除非选中tr的背景色,事件中捕获到当前选中行的id,进行根据角色id显示对应功能权限的处理。

$("table > tbody > tr").click(function () {
$("table > tbody > tr").removeAttr("style")
$(this).attr("style", "background-color:#beebff");
selectedRole = $(this).find("input").val();
loadPermissionByRole(selectedRole);
});
//根据选中角色加载功能权限
function loadPermissionByRole(selectedRole) {
$.ajax({
type: "Get",
url: "/Role/GetMenusByRole?roleId=" + selectedRole + "&_t=" + new Date().getTime(),
success: function (data) {
$("#treeDiv").find("li").each(function () {
$("#treeDiv").jstree("uncheck_node", $(this));
if (data.indexOf($(this).attr("id")) != -1) {
$("#treeDiv").jstree("check_node", $(this));
}
})
}
});
};

2 用户管理

用户管理中,需要对用户进行角色分配,一个用户可以拥有多个角色。角色多选这里使用了select2插件,可以直接通过Bower管理器添加select2的依赖引用,添加后发现样式与现有框架中的样式不太协调,没有再进行调整,直接使用了我以前修改过的select2。

2.0 使用select2

将selcet2文件夹放至Fonour.MVC项目的/wwwroot/lib/文件夹下,修改布局页_Layout.cshtml的内容,增加对select2.css、select2.js、以及中文配置的引用。

<link rel="stylesheet" href="~/lib/select2/select2.css">
<script src="~/lib/select2/select2.js"></script>
<script src="~/lib/select2/select2_locale_zh-CN.js"></script>

select2加载数据

界面元素增加multiple="multiple"属性,让select2支持多选操作。

<div class="form-group">
<label class="col-sm-2 control-label" for="">所属角色</label>
<div class="col-sm-10">
<select id="Role" class="form-control" style="padding:0px" multiple="multiple">
</select>
</div>
</div>

调用select2()方法,创建select2界面元素;通过ajax请求返回角色列表json对象,将角色信息通过option标签绑定到select2控件。

function loadRoles(data) {
$("#Role").select2();
var option = "";
$.each(data.roles, function (i, item) {
option += "<option value='" + item.id + "'>" + item.name + "</option>"
})
$("#Role").html(option);
}

select2支持多选,以及模糊筛选。界面效果如下:

3 总结

在基本框架的基础上,功能实现并不复杂,到现在为止,四个主要的基本功能基本都已经实现了,里面会涉及一些细节性的问题,比如唯一性验证、密码加密等功能,没有做过多处理。接下来就是要实现根据登录用户动态加载对应的功能菜单,以及功能操作权限的判断。

Asp.Net Core 项目实战之权限管理系统(7) 组织机构、角色、用户权限的更多相关文章

  1. Asp.Net Core 项目实战之权限管理系统(4) 依赖注入、仓储、服务的多项目分层实现

    0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...

  2. Asp.Net Core 项目实战之权限管理系统(0) 无中生有

    0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...

  3. Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端

    0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...

  4. Asp.Net Core 项目实战之权限管理系统(2) 功能及实体设计

    0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...

  5. Asp.Net Core 项目实战之权限管理系统(3) 通过EntityFramework Core使用PostgreSQL

    0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...

  6. Asp.Net Core 项目实战之权限管理系统(5) 用户登录

    0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...

  7. Asp.Net Core 项目实战之权限管理系统(6) 功能管理

    0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...

  8. Asp.Net Core 项目实战之权限管理系统(8) 功能菜单的动态加载

    0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...

  9. 【无私分享:ASP.NET CORE 项目实战(第十章)】发布项目到 Linux 上运行 Core 项目

    目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 ASP.Net Core 给我们带来的最大的亮点就是跨平台,我在我电脑(win7)上用虚拟机建了个 CentOS7 ,来演示下 ...

随机推荐

  1. 算法与数据结构(十六) 快速排序(Swift 3.0版)

    上篇博客我们主要聊了比较高效的归并排序算法,本篇博客我们就来介绍另一种高效的排序算法:快速排序.快速排序的思想与归并排序类似,都是采用分而治之的方式进行排序的.快速排序的思想主要是取出无序序列中第一个 ...

  2. RabbitMq应用一的补充(RabbitMQ的应用场景)

    直接进入正题. 一.异步处理 场景:发送手机验证码,邮件 传统古老处理方式如下图 这个流程,全部在主线程完成,注册->入库->发送邮件->发送短信,由于都在主线程,所以要等待每一步完 ...

  3. Asp.Net Core 项目实战之权限管理系统(4) 依赖注入、仓储、服务的多项目分层实现

    0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...

  4. 关于SMARTFORMS文本编辑器出错

    最近在做ISH的一个打印功能,SMARTFORM的需求本身很简单,但做起来则一波三折. 使用环境是这样的:Windows 7 64bit + SAP GUI 740 Patch 5 + MS Offi ...

  5. listview下拉刷新和上拉加载更多的多种实现方案

    listview经常结合下来刷新和上拉加载更多使用,本文总结了三种常用到的方案分别作出说明. 方案一:添加头布局和脚布局        android系统为listview提供了addfootview ...

  6. 怎样两个月完成Udacity Data Analyst Nanodegree

    在迷恋数据科学很久后,我决定要在MOOC网站上拿到一份Data Science的证书.美国三个MOOC网站,Udacity上的课程已经被分成了数个nanodegree,每个nanodegree都是目前 ...

  7. Jquery 获得当前标签的名称和标签属性

    得到标签的名称 $("#name").prop("tagName"); 或者 $("#name")[0].tagName; 注意:1.得到的 ...

  8. 【一起学OpenFOAM】系列由来

    1 为什么要学习OpenFOAM 掐指算起来,接触CFD也差不多有十个年头了,其间一直使用的商用CFD软件,有Fluent.CFX.StarCCM+等,这些商用软件各有其优缺点,都能较好的解决常规的工 ...

  9. 免费开源的 .NET 分布式组件库 Exceptionless Foundatio

    前言 在互联网时代,分布式应用.系统变得越来越多,我们在使用 .Net 技术构建分布式系统的时候,需要使用到一些组件或者是助手库来帮助我们提高生产力以及应用程序解耦,但是纵观.Net圈,能够符合要求的 ...

  10. React 其实比 MVVM 架构更加卡顿

    React 号称通过引入 Virtual DOM 带来了性能的提升,而其实 React 之所以需要 Virtual DOM,是因为它的架构下,state 的变更是全量的,然后触发 render 返回全 ...