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

loveyf 2004-10-25 05:19:51
用户登陆时把该用户的所有可执行操作封装起来,提供了一个接口传递用户执行的操作,返回一布尔值。只要知道用户执行什么操作(比如点击一个按钮)并调用该接口,就能判断该用户能否执行这项操作。我想把这个小模块用在一个已经写好的系统上,但我不想再去修改每个功能页面(就想仅仅修改登陆页面)。请问有没有一个可行的方法,当用户登陆进来后,我把他的可执行功能封装后,当他执行一项操作时,可以判断他能否执行这项操作?
...全文
289 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
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!
资源下载链接为: https://pan.quark.cn/s/abbae039bf2a 在计算机科学领域,编译原理是研究如何将编程语言转化为机器可执行代码的理论基础。其中,三地址代码(Three-Address Code,TAC)作为一种中间表示形式,在编译器设计中经常被使用,尤其是在生成目标代码的阶段。本文将深入探讨三地址代码的概念、生成器的工作原理及其在编译过程中的作用。 三地址代码是一种简单的低级抽象语法树(AST)表示,每条指令涉及三个操作数,通常包括两个源操作数和一个目的操作数。这种格式简化了代码优化和目标代码生成的复杂性。例如,一个简单的算术表达式“x = y + z”在三地址代码中可能表示为: 在这个例子中,“t1”是一个临时变量,存储了“y + z”的结果,然后这个结果被赋值给“x”。 生成三地址代码的过程通常发生在编译器的中间阶段,即语法分析之后,语义分析之前。这个阶段称为“代码生成”或“中间代码生成”。编译器通过词法分析器处理源代码,将其转化为标记流;接着,语法分析器根据上下文无关文法将标记流解析成抽象语法树。三地址代码生成器就是在这个阶段介入,它遍历AST,为每个节点生成对应的三地址指令。 在Turbo C3.0这样的编译器环境下,开发者可以实现自己的三地址代码生成器。虽然Turbo C3.0是一款较老的编译器,但其C语言编译器设计原理依然适用于现代编译器开发。开发过程中,我们需要考虑如下关键点: 符号表管理:符号表记录了程序中所有标识符的类型、作用域和关联地址,对于生成三地址代码至关重要,因为它提供了关于操作数的类型信息。 数据类型转换:编译器必须处理不同数据类型的运算,确保它们在三地址代码中正确表示。例如,整型与浮点型之间的转换需要特别处理。

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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