J2EE 权限问题,高手进来讨论一下:)

qingyuan18 2007-07-01 12:07:33
我们的项目中jsp页面分成多个模块,每个用户有自己的权限模块树,即A用户有模块1,2,3的权限,B用户有模块2,3,4的权限,要求系统对不同的用户所属的模块进行权限验证,即A用户不能访问模块4页面,同理B用户是不能访问模块1页面

大家知道在Struts中是可以通过直接输入/jsp/xxx.jsp的方式绕过Action的权限控制直接访问页面的,我们现在的解决方式是每个模块页面有一个共用的javaBean,该bean实现从session中取出登录用户,判断该用户权限树中是否有该模块页面的权限,如果没有则跳转到登录页面要求以另一用户登录

但是这种解决方式很死,需要为每个页面定义一个ID,在每次初始化时将登录用户所属的模块页面ID都存在session中,虽然可配置在数据库中,但是代码维护性还是较差

各位高人有没有什么更好的解决办法,比如URL重写之类的,可以根据URL来进行权限控制的方法~~
...全文
249 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
qingyuan18 2007-07-03
  • 打赏
  • 举报
回复
to:xiemingmei(谢明媚)
这位仁兄,你说的将用户的权限与目录架构关联是置换模式的一种,这个我懂,但是我们项目的情况是用户的权限是可变的,也就是说/jsp/userA/这个目录可能今天A用户有权限,明天变成B用户的权限而A用户不能访问了,这样的话根据资源的URL来验证权限是不行的,必须要有ID来标识

不过你的过滤器的方法是一个很好的思路,谢谢!

大家还有更好的建议么?这个项目已经基本上完成,解决方法还是用我最先说的那种,大家的建议将用在下个项目中,工期要紧,呵呵:)
forandever 2007-07-01
  • 打赏
  • 举报
回复
去看看 acegi ,你可以学习模拟它的实现模式,然后通过自己写一个适合你的项目的 filter 权限控制器,然后或者文件配置,或者数据库配置,来实现权限分发
xiemingmei 2007-07-01
  • 打赏
  • 举报
回复
不知搂主是否使用过j2ee的web.xml的<security-constraint>用法,这个完全解决问题。

如果不用以上方法,则可以:
1、把jsp的所在的文件夹或文件本身的名字设计得有规律性;
2、把用户放到用户组中去,用户组与资源相关联;
3、创建一个web filter进行处理本web模块所有的请求,也就是<url-pattern>*</url-pattern>;
4、在filter中,截取请求url的文件夹部分及文件名等,做逻辑处理构造或获取资源ID,再根据资源ID和登陆用户的用户组ID访问“用户组资源表”进行验证,如验证成功,则filterChain.doFilter(),否则,则response.redirect("没有权限.jsp");

注意:逻辑处理时要考虑到哪些是受限资源,哪些不是,
如访问的是 "没有权限.jsp" 则要filterChain.doFilter();
而不是response.redirect("没有权限.jsp"),否则就死循环了。

81,091

社区成员

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

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