求细粒度数据权限控制最好的设计方法?

萤火架构 2010-06-08 06:37:01
目前的设计:

首先定义数据资源,数据资源指定关联的字段;
具体的功能页面,绑定数据资源;
具体的角色拥有该功能页面的权限,并设置关联字段的值,可能是动态的值;
在页面程序中,对构造的查询条件进行注入,注入数据资源的条件。

目前的设计,感觉耦合度仍比较大,设想可以不用修改页面程序,将数据权限注入放到具体的SQL执行处。

还想将编辑与删除都纳入数据权限控制,开发人员和业务人员都可以很好的控制权限。

网上也看到很多人讲AOP,成熟的太少,希望有人能赐教下如何设计这块?
...全文
6081 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
aliangzhang 2012-03-11
  • 打赏
  • 举报
回复
http://download.csdn.net/detail/aliangzhang/4130047
这是我对WEB应用中数据权限控制的一些思路和示例代码,差不多能满足你的需求,希望对你有所帮助。
liuyun032 2012-02-21
  • 打赏
  • 举报
回复
都是思路,有些失望
zwj360066435 2011-12-22
  • 打赏
  • 举报
回复
dreaminglove 2011-08-20
  • 打赏
  • 举报
回复
没见有用的东西啊,上传一下详细的权限管理代码看看呗
lgs3810 2011-07-21
  • 打赏
  • 举报
回复
學習了
chenhongjun0624 2011-07-11
  • 打赏
  • 举报
回复
bookmark
缪军 2010-06-08
  • 打赏
  • 举报
回复
是这样的,出于某些考虑:
比如AppCenter需要管理不同的软件公司提供的应用程序,
又比如,即使是在你的团队里,也希望这部分代码与表单设计无关,
表单设计好后,"挂接"或"引入"一个独立的dll就可以了.

举个asp.net WebForm的实际实施的方案(给你思路,具体方案当然很多)
每个页面都继承了MyBasePage,其实最初就是隔离,MyBasePage里没有任何代码,
但是,以后,你可以随时植入任何东西,让所有继承者都受益,

控件也是一样,你可以吧所有webform的常用控件做一次隔离,其实抄一遍就行了,

萤火架构 2010-06-08
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 microtry 的回复:]
实施的时候,先把接口设计好:注册权限、获取权限、应用权限等等,
一个表单只要需要权限管理,就继承这些接口,
呵呵,如果做得漂亮,比如再做一次隔离,连代码都不用加,
[/Quote]
这个我需要在具体的表单里实现这些接口是吧,“比如再做一次隔离”是是么意思呢?

我原来只想的是可以有一个切面控制数据表中数据的访问权限,在数据访问层注入一些查询条件。
你这个提醒了我,还有些具体应用功能也是需要控制的。
缪军 2010-06-08
  • 打赏
  • 举报
回复
呵呵,那说明这个头像不好,改天换一个
萤火架构 2010-06-08
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 microtry 的回复:]
引用 9 楼 bossma 的回复:
那么每次变化,怎么处理?修改代码?

我在4楼说了半天,你不看吗?
注册,
别说权限要求变更不能修改代码,
就是字段变更也不应该修改代码,
确切的说不需要重新发布程序或补丁
[/Quote]
哦 只注意看回复了 没注意是同一个人
缪军 2010-06-08
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 bossma 的回复:]
那么每次变化,怎么处理?修改代码?
[/Quote]
我在4楼说了半天,你不看吗?
注册,
别说权限要求变更不能修改代码,
就是字段变更也不应该修改代码,
确切的说不需要重新发布程序或补丁
萤火架构 2010-06-08
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 microtry 的回复:]
经常,即便在同一个企业里,在不同的阶段,对权限的要求也是不一样的
[/Quote]

那么每次变化,怎么处理?修改代码?
缪军 2010-06-08
  • 打赏
  • 举报
回复
经常,即便在同一个企业里,在不同的阶段,对权限的要求也是不一样的
缪军 2010-06-08
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 sp1234 的回复:]
如果你稍有实践经验你会发现,大多数权限系统都是被人诟病的,是给人找麻烦而不是帮助人的。
[/Quote]

所以权限管理是要"动态的",客户有需求的时候,才去"注册",
比如一个报表,在A企业里,大家都可以看,没有权限要求,管理员什么都不需要做;
而B企业,只有一部分员工可以看,管理员只要注册这个表单,然后分配权限就行了
  • 打赏
  • 举报
回复
如果你稍有实践经验你会发现,大多数权限系统都是被人诟病的,是给人找麻烦而不是帮助人的。
缪军 2010-06-08
  • 打赏
  • 举报
回复
实际上,权限管理的数据量少得可怜,
细粒度权限管理的表单其实并不多,
多了以后,别说数据,就是管理员也受不了的
缪军 2010-06-08
  • 打赏
  • 举报
回复
一般来说,权限管理是应用程序无关的,假设有一个独立的AppCenter控制中心,
每个应用程序向AppCenter注册需要加入权限管理的页面(或者说表单),以实现页面级的权限控制,而这个只是能不能用的问题,相对简单;
另一方面,在表单内,也要能够向AppCenter注册:表单权限明细,也就是楼主所说的细粒度权限,
至于权限的设计:tag可以自定义,也可以跟控件Id关联,只要你的生产架构相配套就行;

实施的时候,先把接口设计好:注册权限、获取权限、应用权限等等,
一个表单只要需要权限管理,就继承这些接口,
呵呵,如果做得漂亮,比如再做一次隔离,连代码都不用加,

权限的分配则是在AppCenter统一管理
足球中国 2010-06-08
  • 打赏
  • 举报
回复
数据量超过几在万时。应该不是权限的问题了。而且效率的问题。权限分的太细。肯定会带来数据量的增加。
yagebu1983 2010-06-08
  • 打赏
  • 举报
回复
学习。。。。。
wuyq11 2010-06-08
  • 打赏
  • 举报
回复
细粒度:表示实例级需要考虑具体对象的实例
权限系统提供一个基础,并解决那些具有“共性”的(或者说粗粒度的)部分
在这个基础之上,根据“业务逻辑”的独特权限需求,编码实现细粒度部分
用户组
角色组
权限分1可执行 2可读 3可写 等
Action粒度的权限管理

13,190

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 分析与设计
社区管理员
  • 分析与设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧