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

推荐订阅源

cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
D
Docker
有赞技术团队
有赞技术团队
博客园 - Franky
Last Week in AI
Last Week in AI
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
雷峰网
雷峰网
WordPress大学
WordPress大学
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
美团技术团队
B
Blog RSS Feed
博客园 - 三生石上(FineUI控件)
The GitHub Blog
The GitHub Blog
C
Check Point Blog
P
Privacy International News Feed
Security Latest
Security Latest
N
Netflix TechBlog - Medium
C
CERT Recently Published Vulnerability Notes
The Last Watchdog
The Last Watchdog
T
Tailwind CSS Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
T
Tor Project blog
O
OpenAI News
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
IT之家
IT之家
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Hacker News - Newest:
Hacker News - Newest: "LLM"
V
V2EX
云风的 BLOG
云风的 BLOG
Spread Privacy
Spread Privacy
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
J
Java Code Geeks
S
Secure Thoughts
P
Privacy & Cybersecurity Law Blog
Blog — PlanetScale
Blog — PlanetScale
Y
Y Combinator Blog
G
GRAHAM CLULEY
Stack Overflow Blog
Stack Overflow Blog
Recent Announcements
Recent Announcements
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Attack and Defense Labs
Attack and Defense Labs
C
Cyber Attacks, Cyber Crime and Cyber Security
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
aimingoo的专栏
aimingoo的专栏
Jina AI
Jina AI
月光博客
月光博客
T
Tenable Blog
V
Visual Studio Blog
Know Your Adversary
Know Your Adversary

博客园 - 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中某个类的某个方法,也不需要专门再建一个类方法表

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

所以最终就是

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