zoukankan      html  css  js  c++  java
  • ASP.NET经典权限解决方案,适用于OA、CRM、ERP、HR等应用系统

    经典权限解决方案

    1.权限简介 
    一般的管理系统都需要对用户的操作进行一定的限制,有的用户可以有许多操作,有的则有少量的操作.这样就需要一个授权机制,基于角色的授权机制描述了某个角色拥有一定数量的操作授权,属于该角色的用户则也就拥有了该角色的权限,且若用户属于多个角色则其拥有多个角色权限的集合. 
    我们的权限精确到按钮级别,如共享文档管理,管理可以查询、上传文档、下载文档、删除文档等操作,而一般的用户只需要查询和下载文档就可以了, 
    这时候我们的权限管理就发挥了作用, 下面让我们一步步开始实现! 
    我们使用ASP.NET结合jQuery、EasyUI实现一个精典的权限管理机制

    2.数据模型设计 
    数据模型包括:员工表,角色表,员工与角色关系表和角色权限表 
    员工表: 员工登录到系统,如下图 
    这里写图片描述

    角色表:授权权限的集合对象,如下图 
    这里写图片描述

    角色表与员工关系表:如下图 
    这里写图片描述

    角色权限表:如下图 
    这里写图片描述

    3.Action定义 
    用户对应某功能的操作(如:增删改查)需要一一建立相应操作行为实例(Action),这里以”文档管理”为例: 变量代表文档管理中的单个操作,例如 Directory_add = “j”;代表添加文档操作,其他各操作定义如下:

            public static string Directory_browse = "i";//文档浏览操作
            public static string Directory_add = "j";//文档浏览添加
            public static string Directory_update = "k";//文档浏览修改
            public static string Directory_delete = "l";//文档浏览删除

    定义文档操作Action: 每个Action有标题(text)、图标(iconCls)、处理函数(handler),如下:

        /// <summary>
        /// 文档操作Action
        /// </summary>
        public class DocActions
        {
            public static ToolbarItem Query = new ToolbarItem()
            {
                text = "查询",
                iconCls = "icon-search",
                handler = "oa.os.doc.onBtnQueryDocClick"
            };
            public static ToolbarItem Refresh = new ToolbarItem()
            {
                text = "刷新",
                iconCls = "icon-reload",
                handler = "oa.os.doc.onBtnRefreshDocClick"
            };
            public static ToolbarItem Upload = new ToolbarItem()
            {
                text = "上传文档",
                iconCls = "icon-add",
                handler = "oa.os.doc.onBtnUploadDocClick"
            };
            public static ToolbarItem Update = new ToolbarItem()
            {
                text = "编辑",
                iconCls = "icon-application_edit",
                handler = "oa.os.doc.onBtnEditDocClick"
            };
            public static ToolbarItem Delete = new ToolbarItem()
            {
                text = "删除",
                iconCls = "icon-delete",
                handler = "oa.os.doc.onBtnDelDocClick"
            };
        }

    4.给角色授权, 结合EasyUI数据表格组件,效果如下图 
    这里写图片描述

    勾选复选框就表示为该角色授权其他的操作

    权限目录树的初始化,如下(在AppPermission.cs类)

            /// <summary>
            /// 初始化权限目录树
            /// </summary>
            /// <returns></returns>
            private static PermTreeNode[] CreatePermission()
            {
                PermTreeNode[] nodes = new PermTreeNode[]{
                    new PermTreeNode() { 
                        Name = "系统权限",Id="",
                        children = new PermTreeNode[]{
                            new PermTreeNode()
                            {                  
                                Name = "个人办公",
                                children=new PermTreeNode[]{
                                    new PermTreeNode()
                                    {
                                        Name = "个人考勤",
                                        Action1 = new PermAction() { Name = "个人考勤管理", Action = AppAction.PunchInOut }
                                    },                                                                
                                    new PermTreeNode()
                                    {
                                        Name = "工作日志",
                                        Action1 = new PermAction() { Name = "工作日志管理", Action = AppAction.WorkLog }
                                    }
                                }
                            },
                            new PermTreeNode()
                            {                  
                                Name = "人事管理",
                                children=new PermTreeNode[]{
                                    new PermTreeNode()
                                    {
                                        Name = "部门管理",
                                        Action1 = new PermAction() { Name = "添加", Action = AppAction.Department_add },
                                        Action2 = new PermAction() { Name = "编辑", Action = AppAction.Department_update },
                                        Action3 = new PermAction() { Name = "删除", Action = AppAction.Department_
  • 相关阅读:
    如何理解对象、属性、方法?
    添加超链接,请始终将正斜杠添加到子文件夹
    什么导致table不稳固?
    HTML css和js浏览器兼容问题
    理解前端数据双向绑定原理——Object.defineProperty()
    Js事件传播流程
    移动端开发项目注意事项
    get与post的区别
    Web 页面性能优化与SEO优化
    我的WCF项目系列之二WCF初级应用
  • 原文地址:https://www.cnblogs.com/zxtceq/p/8125686.html
Copyright © 2011-2022 走看看