猿问

企业级权限控制

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

目前权限划分:

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

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


明月笑刀无情
浏览 430回答 2
2回答

慕妹3242003

原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

这样的设计要对每一条SQL的字段进行维护,经理认为这样的维护量太大。"??一点不大,你只要在查询语句时负责解析where条件就可以了! 并不需要知道每一条sql语句,即使你一定要这样做,也只是在DAL层做一个重写,在业务层调用时调用重载后的方法即可。
随时随地看视频慕课网APP
我要回答