權限管理設計思路

最近公司的運營管理系統開發完畢,有時間來寫點東西,就先來總結一下我再權限系統的設計思路吧,希望能有點用。

權限管理分為 功能權限以及數據權限。

功能權限

功能權限是指某個用戶使用某個功能的權限 ,簡單的說就是調用某個接口的權限。

功能權限比較簡單,主要要有三個實體:

用戶:保存用戶信息

角色:用戶的角色信息

權限:權限信息

通過 用戶綁定角色,角色綁定權限來實現對用戶權限的控制,他們之間都是多對多的關係。

數據權限

數據權限就是指不同的用戶,使用同樣的接口得到數據數量,數據維度不同,所以數據權限又分為行級權限以及列級權限。

數據權限-行級權限

行級權限可能會涉及到層級關係,比如銷售數據: 普通員工能只能看自己的銷售數據

銷售組長能看這個組及自己的,部門領導能看所有的。還會有跨部門的權限情況:比如財務部的任何一個人都能看銷售部所有的數據。

行級數據權限表設計(主要字段):

字段1: source_type:需要配置權限的類型(角色或者部門)

字段2: source_id:角色id 或者部門id

字段3: target_type:source 能訪問的目標數據的 類型(角色或者部門)

字段3: target_id:角色id或者部門id

這樣一條數據的意思是,source角色或者部門下的人員能夠訪問target角色或者部門下人員的所有數據。

數據權限-列級權限

列級數據權限表設計(主要字段):

字段1: source_type:需要配置權限的類型(角色或者部門)

字段2: source_id:角色id 或者部門id

字段3: target_type:source 能訪問的目標數據的 類型(客戶列表)

字段3: target_colums:列名 逗號分隔

實現


  1. 再用戶登陸的時候 將這個用戶信息,權限信息,根據以上結構查出來,放到緩存裡(redis)
  2. 功能權限的實現都在過濾器(filter)裡面,有相應的權限才放行。
  3. 數據權限就是在各個數據接口中,根據每個用戶的配置的數據權限動態生成sql ,select 中的值是列級權限的配置,where 條件中加上 行級權限的相關配置。

本文由博客群發一文多發等運營工具平臺 https://openwrite.cn?from=article_bottom 發佈


分享到:


相關文章: