走火入魔.NET权限组件-用资源权限(设置权限)思想来解来解决权限的存储问题

简介:

一个软件并不是B/S的就牛了,或者是C/S的就怎么了,软件的主要目的是为了达到用户的什么目的?QQ为啥不做个B/S的?VS系列为啥不做个B/S的?SAP为啥不做个B/S的?操作系统为啥不作个B/S的?只要能满足客户的需求不管事B/S的C/S的都是可以的,客户是否用起来方便,维护是否方便,定位是否准确比B/S的还是C/S的更重要,一个思想并不在于它是B/S的还是C/S的,而在于是把问题如何巧妙的解决的。

 

   其实权限的存储,看透了,也是很简单的事情,就是 “什么对象对什么资源有什么权限?”把这个逻辑关系能保存好就ok了,你这样设计了,别人也容易阅读你的程序,容易理解你的数据库设计,将来也容易维护一些。

   用一个思想,前后不矛盾的,把整个系统实现出来,也有些不容易,很多环节会出现前后矛盾,思路混乱的情况,所以时刻要提醒自己,自己的权限系统是按“什么对象对什么资源有什么权限?”的指导思想设计的,若有违背了这个思想,那就仔细深入思考,再重新整理思路。

 

什么对象:在系统里确定各种对象的唯一性,需要2个参数,一个是对象的类别,一个是对象的主键,就像是ERP里的入库单(单号)。

什么资源:什么资源,也是一样的,也需要一个分类,一个主键来识别资源的唯一性。

什么权限:最简单的做法,就是有一个权限表,只用主键来识别唯一性,而不是用“哪个模块+哪个功能”来识别权限,那样做过于繁琐了,将来的扩展性、可维护性都会很差一些,不能灵活适应各种复杂的情况。

 

参考权限的存储结构如下:

 

下面是相对万能的权限设置界面参考:

用户资源权限设置如下界面

角色资源权限设置如下界面

当然以上参考界面是,从资源的角度出发,对某个资源,哪些用户哪些角色有什么权限?的角度进行设置的权限页面。

 

存储在数据库中的效果如下:

 

以上界面的思想,也是体现了:“什么对象对什么资源有什么权限?”的核心指导思想。

 

每个软件公司,软件产品,都需要有执著追求的人,追求每一个细节功能的实现,追求每一个用户的反馈意见完美解决,追求不断完善,追求铜墙铁壁的精神,才能作好软件,再简单的软件,真正做透做深都非常不容易,就这么个简单的权限管理系统,我也搞来搞去完善了很多年,更何况一个复杂的应用系统,需要N多人N多年的精心锤炼才能打造出大家喜欢用的精品软件系统来。

 

说得通俗一点儿,我就是输入个内容然后有个查找列表功能就可以了,就这么简单的功能,能诞生出“google,baidu”这样大公司,让我们做个这么简单的功能,有几个人能真正做出来?换成其他的软件系统,也是一样的道理,做个真正功能强大的,好用的软件,都不容易的,没有表面上看上去一样那么简单,特别是模拟过别人系统的人会有这样的感受,不就那么几个功能吗?几天就可以搞定,但是往往模拟了、自己做了后发现,别说几天,几周都做不完。

 

很多事情,并没有你看上去的那么简单,你想象的那么简单,只有自己去做了后才发现,里面的水很深。

 

 

本文转自jirigala_bao 51CTO博客,原文链接:http://blog.51cto.com/jirigala/806828

相关文章
|
3月前
|
前端开发 C# 数据库
.NET中使用BootstrapBlazor组件库Table实操篇
.NET中使用BootstrapBlazor组件库Table实操篇
|
4月前
|
开发框架 前端开发 .NET
七天.NET 8操作SQLite入门到实战 - (1)第七天BootstrapBlazor UI组件库引入
七天.NET 8操作SQLite入门到实战 - (1)第七天BootstrapBlazor UI组件库引入
|
1月前
|
搜索推荐 API C#
.NET开源快速、强大、免费的电子表格组件
.NET开源快速、强大、免费的电子表格组件
|
4月前
|
SQL 开发框架 JavaScript
分享33个ASP.NET电子商务源码和40个ASP.NET控件组件源码,总有一款适合您
分享33个ASP.NET电子商务源码和40个ASP.NET控件组件源码,总有一款适合您
32 0
|
5月前
|
开发框架 关系型数据库 C#
.NET开源且好用的权限工作流管理系统
.NET开源且好用的权限工作流管理系统
|
5月前
|
SQL 数据库 开发工具
“.NET视频总结:认识框架的结构和组件,掌握开发工具的奥妙“
“.NET视频总结:认识框架的结构和组件,掌握开发工具的奥妙“
56 0
|
6月前
|
编解码 JSON 算法
一个支持.Net 7的WinForm开源UI组件框架
一个支持.Net 7的WinForm开源UI组件框架
92 0
|
6月前
|
存储 SQL 监控
.NET开源简单易用、内置集成化的控制台、支持持久性存储的任务调度框架 - Hangfire
.NET开源简单易用、内置集成化的控制台、支持持久性存储的任务调度框架 - Hangfire
|
4月前
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
47 0
|
18天前
|
开发框架 前端开发 JavaScript
JavaScript云LIS系统源码ASP.NET CORE 3.1 MVC + SQLserver + Redis医院实验室信息系统源码 医院云LIS系统源码
实验室信息系统(Laboratory Information System,缩写LIS)是一类用来处理实验室过程信息的软件,云LIS系统围绕临床,云LIS系统将与云HIS系统建立起高度的业务整合,以体现“以病人为中心”的设计理念,优化就诊流程,方便患者就医。
22 0