OA的权限控制

notlikeGaoShou 2010-08-11 07:16:42
最近在做OA的权限这块,但没有好的思路,上网搜了些资料,需要先做好数据库设计,我按照网上别人所说的设计去做,但是在权限表的那块,说是由模块和动作去组合成权限,这个我能明白,但是我觉得权限的话还是得通过自己手动的去拼接吧
比如模块 sys_user(在模块表中字段为moduleValue) 动作有add /delete /update /get(在动作表中字段为actionValue) 那我拼出来的权限(在权限表中字段为permitValue)有sys_user_add/sys_user_delete/sys_user_update /sys_user_get 但是这个拼接我是靠自己手动去组合的(也就是手动去添加),因为我不知道业务里面如何将那两个值组合在一起,但是如果是手动的话我没有必要需要模块表和动作表,我参考的资料如下
http://www.blogjava.net/DreamAngel/archive/2009/02/14/254641.html
权限

在系统中,权限通过模块+动作来产生,模块就是整个系统中的一个子模块,可能对应一个菜单,动作也就是整个模块中(在B/S系统中也就是一个页面的所有操作,比如“浏览、添加、修改、删除”等)。将模块与之组合可以产生此模块下的所有权限。

我只能理解说法,不知道如何做,如果可以的话可否举个业务例子,希望前辈们指点,小弟感激不尽,拜谢!!!
...全文
430 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
notlikeGaoShou 2010-11-02
  • 打赏
  • 举报
回复
好久没上来了,呵呵,差点忘了,3楼的方法还是很好的,虽然我自己做出来了,呵呵
ethan_z 2010-08-23
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 huyong95711 的回复:]

我的自己的思路:
权限表由模块和动作组成
使用JDK1.5的注解也就是Annonation,自定义一个Annonation,包括两个属性,一个是模块名,一个是动作名,在处理的业务方法上比如action上添加该注释,通过interceptor或者Spring的AOP在访问该方法前进行拦截,用JAVA反射取得该方法的上自定义的Annonation,跟登陆用户的权限进行比较
[/Quote]

嗯很不错.
临远 2010-08-18
  • 打赏
  • 举报
回复
Ext JS2做前台的OA
http://www.family168.com/springsecurity/demo/security-swf.html
suki3100 2010-08-17
  • 打赏
  • 举报
回复
OA 权限限制这块,主要还是看数据库表设计,一对多,还是多对一,要先弄好思路 在写,

一般的OA 是一对多的关系,要有张中间表来维持他们的双方关系!
UPC_思念 2010-08-17
  • 打赏
  • 举报
回复
路过,学习下
冬天的蒲公英 2010-08-17
  • 打赏
  • 举报
回复
如果还不明白可以给你个小列子!给我发邮件!
冬天的蒲公英 2010-08-17
  • 打赏
  • 举报
回复
我是实现权限比较的简单,首先是把所有的模块做成一个表 比如(permitValue表)字段 id,p_id,模块名称,标识id(这里是标识这个模块是属于哪个模块的子模块,放p_id就可以的,假如是最上级模块可以用0标识),url 。这样通过控制递归能够生成一颗完整的树。
然后在user表中放一个String字段,放该用户所拥有的权限的p_id,ping成一个字符串中间用逗号隔开,比如“1,2,3,4,5,”;用的时候用split(",");这样基本上可以控制树的形状了,我想通过这个思路,楼主也应该明白每个模块的 增删改查的权限控制了吧!
ywj_316888 2010-08-11
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 huyong95711 的回复:]
我的自己的思路:
权限表由模块和动作组成
使用JDK1.5的注解也就是Annonation,自定义一个Annonation,包括两个属性,一个是模块名,一个是动作名,在处理的业务方法上比如action上添加该注释,通过interceptor或者Spring的AOP在访问该方法前进行拦截,用JAVA反射取得该方法的上自定义的Annonation,跟登陆用户的权限进行比较
[/Quote]

不错
饭炒蛋2009 2010-08-11
  • 打赏
  • 举报
回复
我一进公司就做这个 呵呵
huyong95711 2010-08-11
  • 打赏
  • 举报
回复
我的自己的思路:
权限表由模块和动作组成
使用JDK1.5的注解也就是Annonation,自定义一个Annonation,包括两个属性,一个是模块名,一个是动作名,在处理的业务方法上比如action上添加该注释,通过interceptor或者Spring的AOP在访问该方法前进行拦截,用JAVA反射取得该方法的上自定义的Annonation,跟登陆用户的权限进行比较
xieshengjun2009 2010-08-11
  • 打赏
  • 举报
回复
lz,我们俩到可以多交流交流。。
xieshengjun2009 2010-08-11
  • 打赏
  • 举报
回复
这一块我也想,多了解一下。希望高手来看看。
accessmanager88 2010-08-11
  • 打赏
  • 举报
回复
楼主谈到了权限怎样定义的问题。你说的按照模块+操作来定义完全没有问题,而且非常好。

这种层次的权限,如果是web系统,我建议直接使用Filter来进行控制。降低复杂度。

很多人,尤其是使用过spring secuirty的人,经常会给dao/service设置权限。我不赞同该方法,因为这种方法不是从客户需求角度出发的。 客户要求非常简单,某某某具有某角色,就能访问某个链接;某某某不具有某个角色,因此不能访问该链接,如果访问该链接,拒绝之,并转移到拒绝页面。

这种URL级别的控制,有很多网友已经有相关程序了。也可以参看ralasafe的UrlAclFilter,该Filter还可以控制URL的参数,如/custom?op=add这样的URL。


解决了功能级权限以后,你就开始要留意数据级权限了(也就是总公司的人能查询哪些数据,分公司的人能查询哪些数据,这种行列级权限)。到这个时候,建议你参考Ralasafe

67,549

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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