• 权限设计实现(MVC4+Bootstrap+ PetaPoco+Spring.Net)


    权限设计实现(MVC4+Bootstrap+ PetaPoco+Spring.Net)

    一、前言

    至毕业后一直在做企业Web开发,做过的项目也有不少,每个项目的框架设计都不是一样,但是每个项目的权限模块都是我做的,这样慢慢以来,就形成自己的一套权限开发框架,并成功的在自己做过的几个外包项目中使用,反应较为不错,尤其是BootStrap的页面风格深受客户喜欢。

    二、框架设计

    下面就开始看图说话环节:

    架构设计

    详细解决方案

    01_Murphy.Web:表现层,采用了区域方式实现了各个模块的分离                         

    02_Murphy.Business:业务逻辑层

    03_Murphy.Core:框架核心层,主要是一些缓存处理,参数处理,日志处理等。

    04_Murphy.Data.SQLServer:数据访问层

    05_Murphy.DbUtility:数据库操作类,引入PetaPoco并做了少量的修改以适应 

    06_Murphy.Entity:实体层

    07_Murphy.IData:数据访问接口层

    08_Murphy.Utils:工具类,里面包含了很多东西如文档处理、加密解密、分页处理、验证码等等

    技术选型

    01_ASP.NET MVC 4.0作为页面服务

    02_PetaPoco轻量级ORM框架用于数据持久化

    03_BootStrap 做为页面展示,做了大量定制,完美支持IE8,这也是深受客户喜爱的原因

    04_artDialog 作为弹出层插件

    05_zTree 作为树插件

    06_My97DatePicker 作为日期插件

    07_Noty 作为信息提示插件

    08_TreeGrid 作为树表格插件

    09_Log4Net 作为日志组件

    10_Json.NET 作为序列化组件 

    11_ Highcharts作为图形化报表插件

    三、需求分析

    首先我们需要理解到底什么是权限,以及如何在项目中运用权限,在这里我根据自己的理解描述下,希望各位轻拍。

    1、权限性质

    权限系统的应用者应该有三种不同性质的使用

        1.使用权限  

        2.分配权限  

        3.授权权限

    前两个都比较好理解,在这里我重点解释下授权权限是什么。例如目前给公司做的一套销售管理系统,是面向全国加盟商的,每个加盟商都有自己的用户,在系统中由各个地方的加盟商管理员创建编辑冻结用户,并给用户分配角色授权等。总部人员不用直接管理,但是加盟商管理员的权限是由总部人员授予的。讲再俗一些,就是委托别人来管理、可以授权给别人来管理某个业务。

    2、权限资源

    权限资源一般情况下分为四类。

      1.操作权限  部门经理能够审批、而员工不可以

      2.字段权限  部门经理能够看到本部门下所有员工的岗位值,而员工只能看到自己的岗位值

      3.模块权限  经理和员工登陆系统后拥有的功能模块是不一样的 

      4.数据权限  部门经理可以看到本部门下所有员工的工作计划,而员工只能看到自己的工作计划

    3、功能列表

    现在网上很多的权限系统都基于角色访问控制,基于用户控制的很少,但是在很多情况下基于用户授权是很方便的,本系统不仅支持角色授权,还支持用户授权。首先我们要明确我们要去实现哪些东西。

      1.操作权限项

      2.功能模块

      3.岗位管理

      4.角色管理

      5.组织机构

      6.用户管理

      7.数据字典

      8.系统参数

      9.日志管理

           9.1 登陆日志

         9.2 操作日志

         9.3 系统日志

      10.代码生成

           10.1 命名空间

         10.2 类库命名

         10.3 保存目录

    四、设计实现

    1、表设计

    这里重点说下关于权限的存储, 其实不必想得那么复杂,看透了,也是很简单的事情,就是 “什么主体在什么领域有什么权限?”把这个逻辑关系想清楚了就可以了,你这样设计了,扩展了系统灵活性,将来也容易维护一些。自己的权限系统是按“什么主体在什么领域有什么权限?”的设计思想开发的。

    什么是主体:在系统里确定各种对象的唯一性,一个是对象的类别,一个是对象的主键,就像是系统中的用户(主键)

    什么是领域:其实就是一种资源,需要一个主键来识别资源的唯一性,领域可以是个页面,也可以是个页面上的按钮

    什么是权限:权限可以是“可见”,可以是“只读”,也可以是“可用”

    2、页面设计

    不多说了,先上图吧。整个系统是基于BootStrap定制开发的,页面效果还行。

    首页展示

    功能1:操作权限项

    操作权限项分为两类:操作按钮权限、字段访问权限。

    1.列表页

    2.表单页

    功能2:功能模块

    1.列表页

    2.表单页

    功能3:角色管理

    1.列表页

    2.角色分配权限

    2.1功能模块

    2.2 操作按钮

    2.3 数据权限

    2.4 字段权限

    功能4:岗位管理

    1.列表页

    2.表单页

    功能5:组织机构

    1.列表页

    2.分配角色

    功能6:用户管理

    1.列表页

    2.表单页

    3.分配角色

    4.用户授权

    4.1 功能模块

    4.2 操作按钮

    4.3 数据权限

    4.4 字段权限

    功能7:数据字典

    1.列表页

    2.表单页

    3.管理字典类别

    功能8:系统参数

    功能9:缓存设置

    选择要更新的用户

    功能10:登陆日志

    功能11:操作日志

    操作日志明细

    功能12:系统日志

    查看系统日志

    功能13:代码生成

    1.命名空间

    2.类库命名

    3.保存目录

    4.代码生成

    如果大家感兴趣,就在右下角帮我【推荐】一下吧,在这里谢谢大家了。我接下来就按照模块列表一篇一篇的来写。最后我创建了一个技术交流群:263169088,欢迎大家来交流。

  • 相关阅读:
    atitit.session的原理以及设计 java php实现的异同
    atitit.破解 拦截 绕过 网站 手机 短信 验证码 之自动获取手机短信方式 attilax 总结
    java softReference 详解
    android开发:TextView中android:autoLink属性的作用
    抽象类和接口的简单差别
    android一个简单的线程实例
    Java 批注
    最简单的菜单操作
    AsyncTask的参数介绍
    (转)android中ListView在划屏到底部的时候动态添加ListView的Item实现
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/4165875.html
Copyright © 2020-2023  润新知