第六章:我的权限控制方法论——分布式权限控制
文章大纲 一、分布式角色权限体系 1、前后端分离的分布式权限控制 2、前端的多端分布式权限控制 3、后端的多模 […]
文章大纲
一、分布式角色权限体系
1、前后端分离的分布式权限控制
2、前端的多端分布式权限控制
3、后端的多模块分布式权限控制
二、分布式凭证权限体系
无论在哪个SAAS或是管理系统中,权限控制的设计都是一个复杂的事情。
我们先看一下Wordpress的权限设计。
Capability | Super Admin | Administrator | Editor | Author | Contributor | Subscriber |
create_sites | Y | |||||
delete_sites | Y | |||||
manage_network | Y | |||||
manage_sites | Y | |||||
manage_network_users | Y | |||||
manage_network_plugins | Y | |||||
manage_network_themes | Y | |||||
manage_network_options | Y | |||||
upload_plugins | Y | |||||
upload_themes | Y | |||||
upgrade_network | Y | |||||
setup_network | Y | |||||
Capability | Super Admin | Administrator | Editor | Author | Contributor | Subscriber |
activate_plugins | Y | Y (single site or enabled by network setting) | ||||
create_users | Y | Y (single site) | ||||
delete_plugins | Y | Y (single site) | ||||
delete_themes | Y | Y (single site) | ||||
delete_users | Y | Y (single site) | ||||
edit_files | Y | Y (single site) | ||||
edit_plugins | Y | Y (single site) | ||||
edit_theme_options | Y | Y | ||||
edit_themes | Y | Y (single site) | ||||
edit_users | Y | Y (single site) | ||||
export | Y | Y | ||||
import | Y | Y | ||||
Capability | Super Admin | Administrator | Editor | Author | Contributor | Subscriber |
install_plugins | Y | Y (single site) | ||||
install_themes | Y | Y (single site) | ||||
list_users | Y | Y | ||||
manage_options | Y | Y | ||||
promote_users | Y | Y | ||||
remove_users | Y | Y | ||||
switch_themes | Y | Y | ||||
update_core | Y | Y (single site) | ||||
update_plugins | Y | Y (single site) | ||||
update_themes | Y | Y (single site) | ||||
edit_dashboard | Y | Y | ||||
customize | Y | Y | ||||
delete_site | Y | Y | ||||
Capability | Super Admin | Administrator | Editor | Author | Contributor | Subscriber |
moderate_comments | Y | Y | Y | |||
manage_categories | Y | Y | Y | |||
manage_links | Y | Y | Y | |||
edit_others_posts | Y | Y | Y | |||
edit_pages | Y | Y | Y | |||
edit_others_pages | Y | Y | Y | |||
edit_published_pages | Y | Y | Y | |||
publish_pages | Y | Y | Y | |||
delete_pages | Y | Y | Y | |||
delete_others_pages | Y | Y | Y | |||
delete_published_pages | Y | Y | Y | |||
delete_others_posts | Y | Y | Y | |||
delete_private_posts | Y | Y | Y | |||
edit_private_posts | Y | Y | Y | |||
read_private_posts | Y | Y | Y | |||
delete_private_pages | Y | Y | Y | |||
edit_private_pages | Y | Y | Y | |||
read_private_pages | Y | Y | Y | |||
unfiltered_html | Y | Y (single site) | Y (single site) | |||
unfiltered_html | Y | Y | Y | |||
Capability | Super Admin | Administrator | Editor | Author | Contributor | Subscriber |
edit_published_posts | Y | Y | Y | Y | ||
upload_files | Y | Y | Y | Y | ||
publish_posts | Y | Y | Y | Y | ||
delete_published_posts | Y | Y | Y | Y | ||
edit_posts | Y | Y | Y | Y | Y | |
delete_posts | Y | Y | Y | Y | Y | |
Capability | Super Admin | Administrator | Editor | Author | Contributor | Subscriber |
read | Y | Y | Y | Y | Y | Y |
基于用户角色和用户等级,实现分层次的角色权限控制体系。
WordPress权限控制系统是一个非常经典的权限控制系统,但是,因为Wordpress在用户和权限方面做得非常“轻量化”,所以,Wordpress的权限控制系统可以说只是一个完整的“骨架”,然而,仅仅是一个骨架也足以让很多人头昏脑胀。
所以,你可以想象一下,在那些大系统、复杂系统中,权限控制能复杂到多么地令人发指。
我曾经做过很多很多产品,涉及面也很广,权限控制系统几乎是每个产品都会涉及的,所以在这方面积累了大量的经验。
我曾经无数次优化和简化各种权限控制系统。最终总结出一套简单有效的方法。我把这套方法称之为:分布式权限控制。
权限控制之所以复杂,最根本的原因是因为集中式的权限设计、分配和管理导致我们不得不“集中式”地,上帝视角地去考虑各种各样的角色在各种各样的场景中的“能”和“不能”。
而,如果,权限的分配和管理被分散开,那么,一切都将变得简单得多了。
一、分布式角色权限体系
经典的权限控制体系都是集中式的角色权限体系。
角色权限体系,一直是主流。
这里介绍的是分布式的角色权限体系。
无论集中式还是分布式,角色权限体系有一点是相同的:角色决定权限,是什么样的人决定了有什么样的能力。
分布式角色权限体系可以分成三种。