需求描述:
在一些后台管理系统中,每个身份登录的权限不一样,以至于配置的菜单不一样。就我做过的小区物业管理系统而言,举个例子:业主登录网站只能看到社区服务中的投诉、维修以及查看公告。而管理员可以看到一些对本小区的基本操作,例如查看楼栋,查看业主,账单催缴等等…而超级管理员,可以看到所有界面,以及处理一些审核等等一系列。那么这个时候,我们没必要每个身份做一个系统,而是通过权限管理,对每种身份做配置;
以下为部分页面展示:
①设置职位和权限:查看所有职位,以及对职位增删查改,“配置权限”是一个超链接,到另一个页面,就是对该职位进行菜单配置:

②配置权限:对该职位进行菜单配置。需要注意的是,菜单有二级菜单,那么在进入此页面的时候,初始权限的复选框必须是勾选上的,以及怎么对此进行处理,是一个小难点

思路分析:
1、在“配置权限”超链接上,用问号传参,把当前职位的ID传入配置权限页

2、在“配置权限”的操作方法中,用viewBag或viewData保存一下职位ID
3、在“配置权限”视图中,放一个隐藏input存value为viewData,也就是当前职位的ID

4、在当前“配置权限”视图中的确认按钮下面,将当前复选框的值和职位ID的值一起用ajax送入后台控制器中的确认按钮操作方法当中
前台ajax:

<script type="text/javascript">//确定按钮function InsertData() {var obj = "";//定义一个字符串变量,用来存放复选框的值var Did = $("#Did").val();//职位ID$('input[name="itemcheck"]:checked').each(function () {obj += $(this).val()+",";});//遍历存放复选框的值var data = { obj: obj, Did: Did }$.ajax({//地址改掉 这是给你类赋值的方法url: "/SetPosition/InsertData",data: data,type: "POST",success: function (data) {if (data.mag == 1) {alert('提交成功!');window.location.href = "/SetPosition/Index";}else {alert('提交成功!');}},error: function (msg) {alert("error:" + msg.responseText);}});}
</script>

5、后台:先找到总功能表,再根据当前从职位ID里传的在权限表中查询的当前职位有哪些,再把当前职位这个人有的功能全删掉,再重新遍历,把前台传过来的勾选的功能与原功能对比,如果一样就放到权限表里去

[HttpPost]public ActionResult InsertData(string obj,int Did){var newobj = obj.Split(',');ZeroEntities db = new ZeroEntities();var list= db.tb_Fcuntion.ToList();var listDF = db.tb_DegreeFunc.Where(P => P.DegreeID == Did).ToList();if (listDF.Count()>0){foreach (var item in listDF){db.tb_DegreeFunc.Remove(item);}}for (int i = 0; i < newobj.Count() - 1; i++){foreach (var item in list){if (newobj[i].ToString() != ""){if (newobj[i].ToString() == item.FctionID.ToString()){var Setobj = new tb_DegreeFunc(){DegreeID = Did,DegreeFuncID = item.FctionID,FunctionID = item.FctionID,FunctionIDtow = item.FctionIDtow,FunctionName=item.FctionName,url = item.url};db.tb_DegreeFunc.Add(Setobj);}}}}if (db.SaveChanges() > 0){var massge = new { mag = "1" };return Json(massge);}else{var massge = new { mag = "0" };return Json(massge);}}

PS:权限配置视图的菜单怎么显示:
根据当前登录人在权限表中国找到所有功能,在定义一个int集合,存挡圈登录人的二级菜单字段,在用list2找到总功能表的一级菜单,这样一级菜单和二级菜单ID就都找到了,然后对比相同的放list3
“配置权限”控制器操作方法代码:

public ActionResult SetJurisdiction(int Did){ViewData["Did"] = Did;ZeroEntities db = new ZeroEntities();ViewData["listOne"] = db.tb_Fcuntion.Where(f => f.FctionIDtow == 0).ToList();var list1 = db.tb_DegreeFunc.Where(p => p.DegreeID == Did).ToList();var list2= db.tb_Fcuntion.Where(f=>f.FctionIDtow!=0) .ToList();var listsum = new List<SetJurisdictions>();for (int i = 0; i < list1.Count(); i++){for (int j = 0; j < list2.Count; j++){if (list1[i].FunctionID == list2[j].FctionID){list2.Remove(list2[j]);}}}foreach (var item1 in list1){foreach (var item2 in list2){if (item1.FunctionID == item2.FctionID){list2.Remove(item2);}}}foreach (var item in list2){var obj = new SetJurisdictions(){FctionID = item.FctionID,FctionName=item.FctionName,FctionIDtow=item.FctionIDtow,isChecked="false"};listsum.Add(obj);}foreach (var item in list1){var obj = new SetJurisdictions(){FctionID = item.FunctionID,FctionName = item.FunctionName,FctionIDtow = item.FunctionIDtow,isChecked = "ture"};listsum.Add(obj);}listsum = listsum.OrderBy(p => p.FctionID).ToList();ViewData["SetJurisdictions"] = listsum;return View();}

“配置权限”视图代码:

<div class="row"><div class="col-lg-12"><div class="x_panel" style="width:98.8%;margin-left:15px;"><div class="x_title"><h2>功能菜单</h2><div class="xbox-more"><button type="button" class="btn btn-primary btn-sm" onclick="InsertData()">确认</button></div><div class="clearfix"></div></div><div class="x_content"><input type="hidden" id="Did" value="@ViewData["Did"].ToString()"/><div class="table-responsive"><table id="ComplaintTable" class="table  jambo_table bulk_action"><thead><tr><th class="column-title text-center">菜单名</th><th class="column-title text-center"><input type="checkbox" id="allcheck" onchange="All()" />  功能名</th></tr><thead><tbody id="t_body">@{int a = 0;//var list = ViewBag.list as List<WebApplication2.Models.MatherboadrModel.tb_DegreeFunc>;var listOne= ViewData["listOne"] as List<WebApplication2.Models.MatherboadrModel.tb_Fcuntion>;}@foreach (var item in ViewData["SetJurisdictions"] as List<WebApplication2.Controllers.Position.SetPositionController.SetJurisdictions>){a++;<tr class="pointer">@{ var cd = listOne.Where(p => p.FctionID == item.FctionIDtow).FirstOrDefault().FctionName;}<td class="text-center " id="complaintId" style="border-right:1px solid #E6E9ED">@cd</td><td class="text-center " id="complaintId">@if (item.isChecked == "false"){<input type="checkbox" name="itemcheck" onchange="Items()" value="@item.FctionID" /> @item.FctionName}else{<input type="checkbox" name="itemcheck" checked="checked" onchange="Items()" value="@item.FctionID" /> @item.FctionName}</td></tr>}</tbody></table><div class="btn-group"></div></div></div></div></div>
</div>

那么,还有一些全选框的脚本代码就不放啦,以上描述足够做出权限管理了。
整理不到位,因为主要还是给自己看的,见谅

后台管理系统之权限管理相关推荐

  1. 后台管理系统、商品管理、商品发布、商品回收、订单管理、退款管理、运营管理、商城设置、导航分类、营销管理、优惠券套餐、数据统计、活跃用户、数据埋点、财务管理、对账单、财务数据、账户资产、电商后台

    后台管理系统.商品管理.商品发布.商品回收.订单管理.退款管理.运营管理.商城设置.导航分类.营销管理.优惠券套餐.数据统计.活跃用户.数据埋点.财务管理.对账单.财务数据.账户资产.账号管理.电商后 ...

  2. antd权限管理_Ant Design Pro开发后台管理系统(权限)-阿里云开发者社区

    前言 权限是后台管理系统常见的需求,后台开发必须考虑设计的模块,antd-pro给我们提供了很好的关于权限的封装,我们只需要在配置菜单的时候配置上准入身份,在登录成功以后获取到登陆者身份以后更新登录人 ...

  3. (后台管理系统的权限控制与管理)

    此文章根据视频教程进行整理前端面试官必问系列-后台系统的权限控制与管理,建议搭配视频教程一起食用效果更佳 在Web 系统中,权限很久以来一直都只是后端程序所控制的. 为什么呢? 因为Web 系统的本质 ...

  4. 前端面试必问(后台管理系统的权限控制与管理)

    此文章根据视频教程进行整理前端面试官必问系列-后台系统的权限控制与管理,建议搭配视频教程一起食用效果更佳 在Web 系统中,权限很久以来一直都只是后端程序所控制的. 为什么呢? 因为Web 系统的不质 ...

  5. React项目-点餐后台管理系统-react框架实现后台管理系统(包含权限处理)--新手入坑必看!(一)

    点餐后台管理系统(react) 一.前言 二.项目介绍 三.相关技术 四.项目实现的功能 4.1.功能分析 4.2.项目结构 4.3.axios封装及mock数据 4.3.1.axios封装 4.3. ...

  6. 动态后台获取_后台管理系统的权限以及vue处理权限的思路

    一般来说,在(后台)管理系统(最早的企业级的项目和网站的后台管理系统现在大部分人都叫后台管理系统)中才会有权限之说.权限分为功能级权限和数据级权限.这篇文章主要谈论功能级权限. 一.名词解释: 权限的 ...

  7. 后台用户角色权限管理设计

    目录 1.概述 2.设计 2.1 用户管理 2.2 角色管理 2.3 权限管理 2.4 用户.角色.权限的关系 3.总结 1.概述 在设计产品后台系统设置时,可根据不同项目的实际需求来设计后台系统设置 ...

  8. 后台管理系统的权限以及vue处理权限的思路

    一般来说,在(后台)管理系统(最早的企业级的项目和网站的后台管理系统现在大部分人都叫后台管理系统)中才会有权限之说.权限分为功能级权限和数据级权限.这篇文章主要谈论功能级权限. 一.名词解释: 权限的 ...

  9. 房产管理系统用户权限管理

    数图互通高校房产管理系统是基于公司自主研发的FMCenterV5.0平台,是针对中国高校房产的管理特点和管理要求,研发的一套标准产品:通过在中国100多所高校的成功实施和迭代,形成了一套成熟.完善.全 ...

最新文章

  1. AI一周热闻:GitHub免费开放无限私有库;苹果市值蒸发超450亿美元;小米入股TCL...
  2. CloudStats :一款SaaS 服务器监控工具
  3. 快速增量备份程序 DeltaCopy
  4. 学python是看书还是看视频-Python与豆瓣读书
  5. [Idea Fragments]2013.08.08
  6. 判空前后顺序的思考(代码规范)
  7. leetcode104. 二叉树的最大深度(层序遍历09)
  8. disruptor3_发布Disruptor 3.0.0
  9. linux dpkg未找到命令_Linux安装软件时90%的人会遇到这个报错,如何解决?
  10. java util.function.BiConsumer
  11. Intersection of Two Prisms(AOJ 1313)
  12. 【pytorch】RuntimeError: 1only batches of spatial targets supported (3D tensors) but got targets of si
  13. python爬取网易云音乐付费音乐_python爬虫学习教程,爬取网易云音乐!
  14. 计算机关闭声音快捷键,电脑声音快捷键【运用方式】
  15. 简述扁平式管理的技术手段
  16. 电子计算机厂房火灾危险性,厂房建筑设计防火规范(57页)-原创力文档
  17. ffmpeg 保存图片 将rgb数据_FFMPEG 实现 YUV,RGB各种图像原始数据之间的转换(swscale)...
  18. J2EE技术简单介绍
  19. 无源滤波器--低通滤波器(LPF)
  20. Hold不住的老师 HNUST 1588

热门文章

  1. CSS基础(超详解)
  2. Cloudcompare点云渲染的多种方式
  3. java房产源码_房产信息网源码 - WEB源码|JSP源码/Java|源代码 - 源码中国
  4. 收藏 外贸企业必备的跨境电商B2B出口报关完整指南
  5. JS网页特效实例:禁止网页放入框架
  6. 电子书下载:ASP.NET 2.0 Revealed.chm
  7. 五大典型系统集成商 你是哪一类?
  8. 【GlobalMapper精品教程】041:从多波段影像中提取单波段方法
  9. 群发邮箱软件哪个好?邮箱群发平台哪个好用?
  10. 用电梯服务器怎么解显示e34,OTIS TT电梯操作器操作指南