第六章:我的權限控制方法論—分散式權限控制
文章大綱一、分散式角色權限體系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的權限控制系統可以說只是一個完整的“骨架”,然而,僅僅是一個骨架也足以讓很多人頭昏腦脹。
所以,你可以想像一下,在那些大系統、複雜系統中,權限控制能複雜到多麼令人髮指。
我曾經做過很多很多產品,涉及面也很廣,權限控制系統幾乎是每個產品都會涉及的,所以在這方面累積了大量的經驗。
我曾經無數次優化和簡化各種權限控制系統。最後總結出一套簡單有效的方法。我把這套方法稱之為:分散式權限控制。
權限控制之所以複雜,最根本的原因是因為集中式的權限設計、分配和管理導致我們不得不「集中式」地,上帝視角地去考慮各種各樣的角色在各種各樣的場景中的「能」和「不能」。
而,如果,權限的分配和管理被分散開,那麼,一切都將變得簡單得多了。
一、分散式角色權限體系
經典的權限控制體係都是集中式的角色權限體系。
角色權限體系,一直都是主流。
這裡介紹的是分散式的角色權限體系。
無論集中式或分散式,角色權限體係有一點是相同的:角色決定權限,是什麼樣的人決定了有什麼樣的能力。
分散式角色權限體係可以分成三種。