走火入魔.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

相关文章
|
2月前
|
前端开发 JavaScript 关系型数据库
使用 OpenAuth.Net 快速搭建 .NET 企业级权限工作流系统
使用 OpenAuth.Net 快速搭建 .NET 企业级权限工作流系统
|
10月前
|
传感器 人工智能 供应链
.NET开发技术在数字化时代的创新作用,从高效的开发环境、强大的性能表现、丰富的库和框架资源等方面揭示了其关键优势。
本文深入探讨了.NET开发技术在数字化时代的创新作用,从高效的开发环境、强大的性能表现、丰富的库和框架资源等方面揭示了其关键优势。通过企业级应用、Web应用及移动应用的创新案例,展示了.NET在各领域的广泛应用和巨大潜力。展望未来,.NET将与新兴技术深度融合,拓展跨平台开发,推动云原生应用发展,持续创新。
121 4
|
11月前
|
数据库连接 开发者
.NET 内存管理两种有效的资源释放方式
【10月更文挑战第15天】在.NET中,有两种有效的资源释放方式:一是使用`using`语句,适用于实现`IDisposable`接口的对象,如文件流、数据库连接等,能确保资源及时释放,避免泄漏;二是手动调用`Dispose`方法并处理异常,提供更灵活的资源管理方式,适用于复杂场景。这两种方式都能有效管理资源,提高应用性能和稳定性。
267 2
|
11月前
|
算法 Java 数据库连接
.NET 内存管理两种有效的资源释放方式
【10月更文挑战第14天】在 .NET 中,`IDisposable` 接口提供了一种标准机制来释放非托管资源,如文件句柄、数据库连接等。此类资源需手动释放以避免泄漏。实现 `IDisposable` 的类可通过 `Dispose` 方法释放资源。使用 `using` 语句可确保资源自动释放。此外,.NET 的垃圾回收器会自动回收托管对象所占内存,提高程序效率。示例代码展示了如何使用 `MyFileHandler` 类处理文件操作并释放 `FileStream` 资源。
191 2
|
11月前
.NET 4.0下实现.NET4.5的Task类相似功能组件
【10月更文挑战第29天】在.NET 4.0 环境下,可以使用 `BackgroundWorker` 类来实现类似于 .NET 4.5 中 `Task` 类的功能。`BackgroundWorker` 允许在后台执行耗时操作,同时不会阻塞用户界面线程,并支持进度报告和取消操作。尽管它有一些局限性,如复杂的事件处理模型和不灵活的任务管理方式,但在某些情况下仍能有效替代 `Task` 类。
140 0
|
开发框架 前端开发 .NET
究竟是什么让.NET 开发者社区拥有如此强大的力量?资源、分享还是成长的秘密?
【8月更文挑战第28天】.NET开发者社区为成员提供了丰富的资源、积极的分享氛围和广阔的成长空间,是一个充满活力的知识宝库。在这里,从前沿的开源项目到深入的技术解析应有尽有,无论你是新手还是专家,都能找到适合自己的学习与交流机会,共同推动.NET技术的发展。
84 5
|
前端开发 数据安全/隐私保护 UED
.NET 8 通用权限框架 前后端分离,开箱即用
【8月更文挑战第1天】基于.NET 8 的通用权限框架,采用前后端分离设计,实现真正的开箱即用!无需繁琐配置,一键启动权限管理新体验。利用.NET 8 的高性能与稳定性,结合灵活的前后端开发模式,显著提升开发效率,缩短项目周期。无论大小项目,皆能轻松应对,立即体验高效开发的新篇章!
203 1
|
存储 开发框架 前端开发
基于Lumisoft.NET组件,使用IMAP协议收取邮件
基于Lumisoft.NET组件,使用IMAP协议收取邮件
|
存储 对象存储 Python
`openpyxl`是一个用于读写Excel 2010 xlsx/xlsm/xltx/xltm文件的Python库。它不需要Microsoft Excel,也不需要.NET或COM组件。
`openpyxl`是一个用于读写Excel 2010 xlsx/xlsm/xltx/xltm文件的Python库。它不需要Microsoft Excel,也不需要.NET或COM组件。
|
开发框架 JavaScript .NET
Vue与ASP.NET Core Web Api设置localhost与本地ip地址皆可访问
Vue与ASP.NET Core Web Api设置localhost与本地ip地址皆可访问
173 0