目前公司正在整合公司系統,需要一套權限控制架構。目前權限劃分:1、Login2、menu3、Program4、function(頁面控件)5、Data(資料) 5.1 Field(資料列) 5.2 Row (資料行)目前對前4種控制都已做到,但是對5種的權限管控就比較麻煩,現在的設計是這樣的運用c#代理機制,對方法進行攔截,過濾SQL。如:原SQL: SELECT a,b FROM A過濾后SQL:SELECT a.a FROM (SELECT a,b FROM A) a Where a.a > 100這樣的設計要對每一條SQL的字段進行維護,經理認為這樣的維護量太大。請大家指點,給出一個更好的方案
2 回答

慕妹3242003
TA貢獻1824條經驗 獲得超6個贊
原SQL: SELECT a,b FROM A
過濾后SQL:
if(Exist(select top 1 from A_FieldConfig where user = currentUser and Field ='a')
&& Exist(select top 1 from A_FieldConfig where user = currentUser and Field ='b'))
begin
SELECT a,b FROM A Where id in (select id from A_RowConfig where user = currentUser)
end
貌似直譯的業務邏輯,好處在于易于理解(維護?),壞處在于,貌似配置起來不簡單!

慕神8447489
TA貢獻1780條經驗 獲得超1個贊
這樣的設計要對每一條SQL的字段進行維護,經理認為這樣的維護量太大。"??
一點不大,你只要在查詢語句時負責解析where條件就可以了! 并不需要知道每一條sql語句,即使你一定要這樣做,也只是在DAL層做一個重寫,在業務層調用時調用重載后的方法即可。
- 2 回答
- 0 關注
- 442 瀏覽
添加回答
舉報
0/150
提交
取消