惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Google DeepMind News
Google DeepMind News
SecWiki News
SecWiki News
V
Visual Studio Blog
博客园 - 三生石上(FineUI控件)
WordPress大学
WordPress大学
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
博客园 - 【当耐特】
Martin Fowler
Martin Fowler
宝玉的分享
宝玉的分享
F
Fortinet All Blogs
U
Unit 42
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
aimingoo的专栏
aimingoo的专栏
V
V2EX
Apple Machine Learning Research
Apple Machine Learning Research
博客园 - 聂微东
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
O
OpenAI News
T
Troy Hunt's Blog
TaoSecurity Blog
TaoSecurity Blog
小众软件
小众软件
MongoDB | Blog
MongoDB | Blog
Recent Commits to openclaw:main
Recent Commits to openclaw:main
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
L
LINUX DO - 最新话题
N
News | PayPal Newsroom
PCI Perspectives
PCI Perspectives
Engineering at Meta
Engineering at Meta
美团技术团队
J
Java Code Geeks
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
人人都是产品经理
人人都是产品经理
雷峰网
雷峰网
V
Vulnerabilities – Threatpost
B
Blog RSS Feed
NISL@THU
NISL@THU
Security Latest
Security Latest
The Register - Security
The Register - Security
酷 壳 – CoolShell
酷 壳 – CoolShell
The GitHub Blog
The GitHub Blog
S
SegmentFault 最新的问题
N
News and Events Feed by Topic
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
S
Schneier on Security
罗磊的独立博客
Know Your Adversary
Know Your Adversary
Hacker News: Ask HN
Hacker News: Ask HN
S
Security Affairs
月光博客
月光博客
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO

博客园 - Emmet.C

[求助]关于Vsiual Studio.NET 2005中Error List种错误的定位问题 【求助】关于asp.net中的'Thread was being aborted'异常 安装Tomcat 5.0.28备注 如何在运行时定制DataGrid的显示风格? asp.net中如何回车触发指定按钮的事件 Jbuilder2005安装备注 使用Singleton改善ASP.NET性能备注 Infragistics.WebUI.UltraWebTab.v4.3使用备注 WinForm界面模式 如何定制WebCarlendar类型控件的星期格式 .NET在Debug模式下的编译错误 DataGrid动态绑定 Infragistics UltraWebTab的奇怪问题 关于通过手机收发短信的相关资源 Read CPU ID(from CSDN) 可用性相关的资料站点 万网企业邮箱开始提供垃圾邮件过滤功能了 为何使用表格排版是不明智的? 申请了GMail
架构设计备注(用户以及操作权限管理)
Emmet.C · 2004-11-26 · via 博客园 - Emmet.C

架构设计备注(用户以及操作权限管理)

Posted on 2004-11-26 11:51  Emmet.C  阅读(656)  评论()    收藏  举报

注意:本文并非提出任何建议或者解决方案,只是记录本人在架构设计过程中的体会。

目的:为将来的系统架构设计提供参考,记录架构设计思路

背景:在系统设计中普遍会使用到很多非常通用的功能,本文的目的是提取这些功能并模块化,以便在将来的设计中加以利用,并不断改进,从而降低开发风险,提高开发效率。

用户以及操作权限管理

应用场景描述:用户在一个系统中针对数据的操作扮演不同的角色。 要求该模块可以满足如下功能要求:

可以描述模块-用户的访问许可关系;
可以描述操作-用户之间的访问许可关系;
可以描述数据-用户之间的访问许可关系;

将上述关系归结成应用场景可能类似于以下这样:

当A用户创建a数据,A用户可以对a数据具备完全控制权限,而其他用户(B,C,D,E)对此不具备任何权限。如果A用户需要D用户与他进行协作,但是该协作需要A用户向D用户共享a数据,则D用户可以阅读a数据中的部分信息(这部分信息与其工作相关)以及对a数据进行部分操作(这些操作与其工作相关)
现在引入审核机制:
A用户创建a数据,B用户审核a数据并指派C用户为该数据负责。C用户需要D、E用户进行协作完成特定工作,其工作需要使用a数据。

解决方法:
关键组成:用户、组、数据角色、操作
我将所有操作进行细分,粒度限制为:进行该操作不需要其他操作的协助
操作与数据角色相关,不同的数据角色具备不同的操作许可
组具备一个缺省数据角色,该组的用户也继承该缺省数据角色的权限许可
人员本身不具备权限,但是人员可以属于一个或多个组
当人员属于多个组时,具备这些组缺省数据角色操作权限的合集,我们把这称之为BaseOperationSet(基础操作集)
每个数据会与不同的用户相关,不同的用户在针对该数据的操作过程中承担的是不同的数据角色(例如录入、审核、修改、维护等等),我们把这称之为DataOperationSet(数据操作集)
针对特定数据,先判断基础操作集中是否具备对该数据的操作许可
如果没有,再判断数据操作集中是否有该用户的特定操作许可
如果在基础操作集与数据操作集中都没有,则表明该数据对该用户是透明的。

数据库设计:

类设计:

以后其他应用可以基于此结构进行扩展,例如在当前项目中就以此基础进行进行了如下扩展: