为了账号安全,请及时绑定邮箱和手机立即绑定

企业级权限控制

企业级权限控制

明月笑刀无情 2018-11-02 05:02:11
目前公司正在整合公司系统,需要一套权限控制架构。目前权限划分: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

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


查看完整回答
反对 回复 2018-11-05
?
慕神8447489

TA贡献1780条经验 获得超1个赞

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

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


查看完整回答
反对 回复 2018-11-05
  • 2 回答
  • 0 关注
  • 429 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信