建立了一个多系统权限管理模块,提供了一个接口,传递用户执行的操作,返回布尔值。在不修改已经写好的系统的基础上,当用户执行一项操作

loveyf 2004-10-25 05:19:51
用户登陆时把该用户的所有可执行操作封装起来,提供了一个接口传递用户执行的操作,返回一布尔值。只要知道用户执行什么操作(比如点击一个按钮)并调用该接口,就能判断该用户能否执行这项操作。我想把这个小模块用在一个已经写好的系统上,但我不想再去修改每个功能页面(就想仅仅修改登陆页面)。请问有没有一个可行的方法,当用户登陆进来后,我把他的可执行功能封装后,当他执行一项操作时,可以判断他能否执行这项操作?
...全文
206 点赞 收藏 10
写回复
10 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
learnner 2004-10-28
原来的系统中,客户操作需要检查权限的操作是否经过对应的servlet来处理而不是jsp?

如果是,可以看看Filter类,重新写配置文件web.xml就可以,然后写一个统一的ControlFilter类,在这里调用你的权限检查的servlet

建议看看设计模式
回复
thinkingjava 2004-10-28
明白你的意思,
现在的要求就是如何知道当前用户的操作了,
---------------
1.首先,我把可授权的系统中的每个功能页面中的每个功能进行了登记

我的建议,用户在提交的时候你得到他的页面和按钮的名称,然后组合,就是一项操作
然后去匹配你已经登记的

这样就可以验证,我们就是这样实现的
回复
loveyf 2004-10-28
其实我的意思就是在不修改原有系统(非权限控制系统)的前提下对用户的操作进行判断,确定该用户是否拥有执行权利!
回复
Robotyea 2004-10-28
"多系统统一权限管理系统"做好了,你还要做什么???不就是将它应用到其他的模块内吗?

检查用户的系统权限本来就是要在其他的模块里插入检查的类,而且在项目开始的时候就应该设计完毕的,如果没做好就是设计问题,没什么好说的。

如果你要低耦合状态的模块,上面我已经谈了我的想法,按照我的想法这样只要在servlet(你的control层)里检查就可以了,已经尽可能的减少这里的修改原系统代码量了,当然这样修改做不到disabled。如果你是想在首页做到disabled的,那就该那个页好了,谈不上什么设计,这叫维护,写成动态的就好了,没什么好难得吧!!!

也可能是我的理解能力有问题,爱莫能助,不知你要什么??? 88
回复
loveyf 2004-10-27
谢谢!可能我没有描述清楚吧!首先,我把可授权的系统中的每个功能页面中的每个功能进行了登记,也就是说放在数据库里。并且为每个角色分配权限,也就是刚才登记过的。然后,当用户登陆后,证验出他所属的角色,然后从数据库中找出他所能执行的功能,开成一个个自定义的对象(对应每个功能)放在ArrayList中。当用户招待功能页面中的功能时就可以从ArrayList中查找是否具有执行权利。
注:功能页面中的功能可能是一个WEB按钮,也可能是一个链接。
现在我的意思为:我不想修改可授权的系统,因为功能页面太多(所以功能也很多),修改起来太麻烦。我想在不修改可授权系统的前提下,用一种什么方法得到用户在功能页面执行的操作(如用户在一个功能页面中点击了一个按钮,我如何得知,并去判断?),从而可能判断用户能否执行该操作。

我这样说,算是表达清楚了吧?呵呵
回复
Robotyea 2004-10-27
我不是高手!还有,楼主真酸!
我给你的建议是改原来的代码,如果你偏要单写个模块,我能想到的就是用Java的反射机制reflection(java.lang.reflect)包下的咚咚,这种机制能够通过类名来判断执行了类下那个方法!这会产生效率问题。再说了,你封装的“可执行功能”,到底是什么呀,是数据库记录还是类下的method, I donot know,继续等你的高手吧!
回复
loveyf 2004-10-27
唉,看来CSDN无高手啊,同事们说对了!
回复
loveyf 2004-10-27
首先,我声明一下,我不是偷懒,因为这是项目的要求,也是交给我的任务,因为已有几个成型系统交付给用户使用了,现在我的工作是为这几个已经存在的系统做一个统一权限管理系统,并且尽量不修改那几个系统。
现在我这个多系统统一权限管理系统(暂这么定名吧)已经做的差不多,是依据现流行的角色授权进行设计的。在我的设计框架下必须对原来几个系统进行修改,也就是修改它们的功能页面的具体功能(按钮要根据用户是否具有该执行权限而disabled等),这样的修改虽然简单,但太多,也不符合交给我的任务要求。再结合我上面的说明,希望能提出一个具体的解决办法!谢谢!
回复
Robotyea 2004-10-27
我有几个假设(判断的前提)
你的功能页面是有限的,用户不能随需增加;
提交后页面会有同一个servlet处理;

这样的话,你可以写一个检查功能(可能是按钮或是链接)的类,把相关的用户功能和点击的按钮等对应起来。在每次提交页面后在servlet处理前进行检查。这样的话,可以实现少量的修改代码达到目的。但是事实上你的联接转移上可能会绕过servlet,总之一句话,“懒不是那么好偷的”。

^_^
回复
loveyf 2004-10-26
没有人知道吗?CSDN上的高手哪里去了?
自已up!
回复
发动态
发帖子
Web 开发
创建于2007-09-28

7.9w+

社区成员

Java Web 开发
申请成为版主
社区公告
暂无公告