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

推荐订阅源

Recent Announcements
Recent Announcements
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
O
OpenAI News
D
Docker
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
N
Netflix TechBlog - Medium
人人都是产品经理
人人都是产品经理
Y
Y Combinator Blog
M
MIT News - Artificial intelligence
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - 司徒正美
C
CXSECURITY Database RSS Feed - CXSecurity.com
阮一峰的网络日志
阮一峰的网络日志
K
Kaspersky official blog
Security Latest
Security Latest
T
Tailwind CSS Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
V
Vulnerabilities – Threatpost
W
WeLiveSecurity
N
News and Events Feed by Topic
aimingoo的专栏
aimingoo的专栏
美团技术团队
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Google DeepMind News
Google DeepMind News
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
C
Cyber Attacks, Cyber Crime and Cyber Security
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
B
Blog
T
The Blog of Author Tim Ferriss
Google DeepMind News
Google DeepMind News
Help Net Security
Help Net Security
爱范儿
爱范儿
宝玉的分享
宝玉的分享
腾讯CDC
H
Heimdal Security Blog
Webroot Blog
Webroot Blog
AI
AI
WordPress大学
WordPress大学
Recorded Future
Recorded Future
SecWiki News
SecWiki News
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Security Archives - TechRepublic
Security Archives - TechRepublic
Google Online Security Blog
Google Online Security Blog
C
Check Point Blog
TaoSecurity Blog
TaoSecurity Blog
Cisco Talos Blog
Cisco Talos Blog
The Cloudflare Blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
博客园 - Franky
云风的 BLOG
云风的 BLOG

博客园 - Kevin Zou

vs2008 ctrl+D 查找出错 No files were found to look in. Error while trying to retrieve text for error ORA-03113 的一种解决方式 IE不能直接顯示PDF的原因分析和解決方法 [2012-01-06] 流程系统设计--消息和通知 企业应用整合(1)--一个账号 2010年终随笔--漫谈技术 Schtasks命令理解排程的應用 用Adobe ImageReady制作简单GIF动画 Console输出UTF-8 JQuery1.4+ Ajax IE8 内存泄漏 闲话权限设计三层境界 - Kevin Zou - 博客园 一个时代的终结 Jquery乱码的一次解决过程 asp.net真的是并行处理request的吗? 十年磨一剑—序 十年磨一剑--缓存模块设计 系统设计其实很有趣--从业务逻辑谈起 系统架构随笔--我看三层架构的数据访问层"怪胎"
权限设计的三层境界续
Kevin Zou · 2010-09-27 · via 博客园 - Kevin Zou

《闲话权限设计三层境界》以权限设计为例聊了一下我对系统设计的理解过程,不过有园友在评论中问到了权限设计一些具体细节,于是就又专门就某些问题说明了一下,并同时感谢大家的关注

# 2010-09-27 14:17 顾晓北 回复 引用

@Kevin Zou
我刚想了一下,至少需要5个表吧(如果用关系数据库的话)?
1,用户表;
2,角色表;
3,资源表;
4,用户——角色关系表;
5,资源——角色关系表;

答复:

权限设计过程中的用户表是不可见的,无足轻重的,只要提供一个用户ID给权限系统即可(那些把年龄,学历什么的纳入权限设计纯属扯淡)

以一个实际例子来说

ERP系统有一个用户系统,web中也有一个用户系统

但是为了避免用户记忆这么多账号,密码,因此我们的web系统同样认可ERP用户,接受ERP的用户登录,给ERP的用户进行授权。

而在权限资料表中,权限可能是这样记录的

UserID,ObjectID

-------------------------------

sis@ERP,查询产量           --ERP用户系统中的sis用户

sis@ERP,查询订单          

850.00,管理用户           --web系统的user id 850用户

有这样的权限管控,只要认证过程够聪明,能够认证出sis@ERP,850.00这样的用户ID,

那权限管控过程对于是ERP用户还是web用户都是一样的处理,都是以用户ID和资源ID去找对应

至于sis@ERP到底是个什么东东,姓名是什么,Email是多少,可能只与设计权限分配的页面有关系,与权限管控真的无关

UserID除了可以表示人,它也可以是权限需求所要求的任何主体,如访问者机器的IP

如某系统只允许本厂的人查询,集团中其它公司不能查询

UserID,ObjectID

-------------------------------

172.19,查询产量           --本厂IP段

172.19,查询订单

172.17,查询电话           --兄弟厂IP段

认证过程中,只要识别出了IP,就可调用相同的权限表示逻辑完成权限管控

再举一个例子吧

我们的短信平台接收手机短信查询系统数据

如发送

0D01到1362585XXXX(我们的短信平台号码),则系统会自动将D01生产线现在的产量以短信方式回复

同样,也需要权限管控,要不然所有人都可以发送短信去询问产量了

UserID,ObjectID

-----------------------------------

13638384438,产量查询

13558968888,订单查询

这时的权限主体就是手机号码

不过因为我们的系统同一个服务,可以用短信查询,也可以在web中查询,为了给User只分配一次权限(即短信平台和web系统共用一套权限)

则可以记录用户ID的手机号码

UserID,Phone

-----------------------------------------

850.00,13638384438

54.00,13558968888

然后在认证过程中将短信号码映射到UserID,剩下的事情也就与其它权限的管控是一样了

举了这些例子,只想说明一件事情

权限只是一个工具

《三层境界中》说明了权限的本质是什么

权限表示可能可以抽象,但是权限管控的方法却不一定相同,只是过程却是类似,都是

---------------------------------------

a.识别出人

b.识别出物

c.调用HasPermission(人,物)判断权限

d.实施管控策略

---------------------------------------

同样在InsertUser方法中,也是一个管控的过程,如用户只能新增自己部门的账号

public void InsertUser(User user)

{

       string userID = AuthenticateSystem.UserID;

       if(!RightTool.HasPermission(userID,user.Dept))

             throw new PermissionException("没有” + user.Dept + “的权限”);

       … //新增用户的具体代码

}

同样,资源表的存在与否其实与权限管控也没有很大关系

很多权限管控,并没有资源表

如以URL为权限对象的管控,并不需要专门建一个URL表

以dll中某个类的某个方法,也不需要专门再建一个类方法表

权限认证过程只与识别资源有关,而与有没有资源表完全没有关系

所以最终就是

用户表,资源表在权限设计过程中是不必要存在的