首页 新闻 会员 周边

企业级权限控制

0
悬赏园豆:100 [已关闭问题]

目前公司正在整合公司系统,需要一套权限控制架构。

目前权限划分:

1、Login

2、menu

3、Program

4、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的字段进行维护,经理认为这样的维护量太大。

请大家指点,给出一个更好的方案

 

Fuxj的主页 Fuxj | 初学一级 | 园豆:0
提问于:2009-06-04 16:01
< >
分享
其他回答(1)
0

 

原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

貌似直译的业务逻辑,好处在于易于理解(维护?),坏处在于,貌似配置起来不简单!

陛下 | 园豆:3938 (老鸟四级) | 2009-06-04 18:29
0

"这样的设计要对每一条SQL的字段进行维护,经理认为这样的维护量太大。"??

一点不大,你只要在查询语句时负责解析where条件就可以了! 并不需要知道每一条sql语句,即使你一定要这样做,也只是在DAL层做一个重写,在业务层调用时调用重载后的方法即可。

邀月 | 园豆:25475 (高人七级) | 2009-06-08 10:35
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册