权限设计

ACL:以资源为主
RBAC:以角色为主
RBAC和ACL的差别不是很大。RBAC多了一个Role。你给ACL加上Role,就和RBAC差不多。
我尽量用相同的table name比较他们的 DB Schema。

RBAC:

(1) user,  role,  permission, user-role,  role-permission 五个表
(2) 这个permission 表里面定义了 operation, resource object两个字段。

ACL
(1) object, permission, object-permission 三个表
(2) 这个permission 表里面定义了 user, operation 两个子段。

--

java.security 以前主要用来检查 代码code 的权限(根据Policy判断这段代码是否可以执行)。
现在加入了Subject (相当于role), 和认证部分,javax.security.auth.login  (user login),可以用作 RBAC。
说实话,我感觉那套API相当蹩脚。
由于是标准,第三方提供了不少SPI (NT, Linux 验证)。你如果遵守这套标准(提供Adaptor),别人用起来就舒服一点。

RBAC参考实例图

原文地址:https://www.cnblogs.com/jes_shaw/p/1501710.html