業務場景
集團公司共具有12000名員工,內部OA系統中具有700多個角色,3000多個業務操作,2300多種數據,每位員工具有一個或多個角色,如何快速進行業務操作的權限校驗?
解決方案
- 依賴set集合數據不重複的特徵,依賴set集合hash存儲結構特徵完成數據過濾與快速查詢
- 根據用戶id獲取用戶所有角色
- 根據用戶所有角色獲取用戶所有操作權限放入set集合
- 根據用戶所有角色獲取用戶所有數據全選放入set集合
下面的命令,rid:**表示不同的角色,getall、getById等表示權限
sadd rid:001 getall
sadd rid:001 getById
sadd rid:002 getCount
sadd rid:002 getall
sadd rid:002 insert
合併然後存儲新的set中
sunionstore uid:007 rid:001 rid:002
上面的操作是將用戶007角色001和角色002的權限都附加給他,比如007屬於CEO,001是財務,002是銷售經理。這個操作就是把財務和銷售經理的權限都賦給CEO。在賦權後我們要進行校驗,下面提供了兩種不同改的校驗方式。
校驗1:
smembers uid:007
校驗2:
sismember uid:007 insert
推薦使用第一種方式,我們應該將數據和業務分離開來,第一種方式只是單純地取數據,只提供基礎數據,業務實現交給程序。第二種方式已經加入了數據校驗功能。