較爲常見的RBAC
管理員表和角色表有着多對多的關係,
角色表和權限表有着多對多的關係。
操作表中附上管理員的id,就可以只查看自己的操作信息。
權限表中對應每個權限管理模塊再添加一個可管理全部信息的權限,例如:商品表有個Admin/Goods/ManagerAll的權限,雖然不對應Url,但是可以用來判定是否顯示所有的商品。
進階版的RBAC
昨天有人問我如果是要省級管理員能看到市級管理員和縣級管理員兩個團隊的操作。
增加一張無限級分類的地區表。管理員表多加一個字段,表示自己所屬的地區。
由商品的信息可以知道管理員的信息,由管理員的信息可以知道管理員的所屬地區,兩張表關聯就可以知道商品的所屬地區,這樣可以判斷如果該商品是由當前管理員所屬地區的子級地區人員添加的,就可以查看到。
這個時候就要注意,上面提到有一個管理全部商品的權限,那麼這個權限裏面的判斷還要增加上地區的判斷,只能管理自己所屬地區和子地區的全部商品。
優化一下:
管理員表再多加一個字段,保存自己的所屬地區和所有子級地區,格式爲:1,3,5。。。
這樣的話可以直接就知道要管理的商品是哪些地區的。減少地區無限級分類時查找子級地區進行的多次遞歸。