目前公司正在整合公司系统,需要一套权限控制架构。目前权限划分: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 关注
- 429 浏览
添加回答
举报
0/150
提交
取消