struts1中权限控制的困惑

问题描述

前提:目前在修改一个struts1+ibatis的老系统。权限控制以常见的function->role->user来实现,通过加载不同的菜单来控制用户的操作(菜单:即对应相应的action及method,保存在DB中)。现状:目前系统通过session来判断登录是否,Filter中判断getHeader("Referer")来检查来源。但是Referer又很容易篡改,等于没做控制。问题:用户在登录成功后,我该如何防止用户直接输入action及method访问不该访问的页面?在目前系统基础上,我该如何改进权限控制,小弟有点困惑了。 (难道每个user再配置列表去判断是否有权访问这些action、method?)望赐教。。 问题补充:多谢解疑。不过你说的通过Filter来并且不需要任何代码,能否说的再详细点?小弟不胜感激。metadmin 写道

解决方案

我是这么认为的:getHead("refer")在权限控制中,所涉及场景非常少。大多还是requestPath,也就是struts的ACTION。那么这种ACL控制,可以这个可以通过Filter来解决,不需要任何代码。如果你希望进一步将数据级权限管理,也提取出来。欢迎你看看我们的开源数据级权限产品:www.ralasafe.org/zh
解决方案二:
http://www.ralasafe.org/zh/download下载一下源码, 看看org.ralasafe.webFilter.UrlAclFilter和LoginFilter。
解决方案三:
引用每个user再配置列表去判断是否有权访问这些action、method这个好像不太可取!可以给用户分组,级别之类的! 然给不同的组设置不同的权限!达到效果!struts 1.2 的话可以 过滤器 或者通过修改父Dispatchaction 达到控制权限,重写DispatchAction的execute方法,加入权限控制,后再调用父类方法如:引用 public abstract class BaseDispatchAction extends DispatchAction { // 初始化ActionMessages,以方便其继承的类使用 protected ActionMessages messages = null; @Override public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { // TODO Auto-generated method stub String method= request.getParameter("method"); Permission ps = this.getPermission(mapping, request); ps = new Permission(true,true,true,true,true); if ("list".equals(method)) { if(ps.canAccessOrRead()) { return super.execute(mapping, form, request, response); }else { throw new ErrorCodeException(MessageConst.EXCEPTION_10002,"can not read or access..."); } } return super.execute(mapping, form, request, response); }

时间: 2024-12-31 22:19:58

struts1中权限控制的困惑的相关文章

ASP.NET对HTML页面元素进行权限控制(一)

  界面每个元素的权限也是需要控制的.比如一个查询用户的界面里面有查询用户按钮,添加用户按钮,删除用户按钮,不同的角色我们得分配不同的权限 一个HTML页面有很多的元素比如 , 等.这些元素构成了HTML页面.在Web开发中权限控制是每个系统都要用到了.界面每个元素的权限也是需要控制的.比如一个查询用户的界面里面有查询用户按钮,添加用户按钮,删除用户按钮,不同的角色我们得分配不同的权限,比如一般用户只有查询用户按钮的权限;管理员有添加用户按钮,查询用户按钮的权限;超级管理员查询用户按钮,添加用户

ASP.NET对HTML页面元素进行权限控制(一)_实用技巧

一个HTML页面有很多的元素比如<DIV>,<P>等.这些元素构成了HTML页面.在Web开发中权限控制是每个系统都要用到了.界面每个元素的权限也是需要控制的.比如一个查询用户的界面里面有查询用户按钮,添加用户按钮,删除用户按钮,不同的角色我们得分配不同的权限,比如一般用户只有查询用户按钮的权限:管理员有添加用户按钮,查询用户按钮的权限:超级管理员查询用户按钮,添加用户按钮,删除用户按钮的权限.如何让这三种用户在登录以后得到三种不同的界面形式呢?这时候就需要用到HTML元素进行权限

Liferay中在页面上进行权限控制

在Liferay中,如果我们想要在页面上进行权限控制,比如只有指定权限的用户能看到一些内容,那么我们可以用Liferay预定义的user对象来获取这个对象所拥有的权限,然后再控制页面的显示. 为了在liferay页面上使用user对象,我们必须加入标记库: <liferay-theme:defineObjects/> 然后我们可以在页面上,直接使用user对象,来控制权限,比如我们可以将当前用户是否为管理员用户的存入到一个布尔变量中,如下: <!-- charles:determine

AD与Server-U集成中权限的控制问题

AD与Server-U权限控制的问题.其实说通过AD控制权限还是很不确切的,应该说是通过NTFS文件系统的权限进行权限的控制.AD只是控制账户的. 我在上一篇文章说过,在Server-U中进行组织的"目录访问"权限控制与NTFS权限控制是叠加的.现在看来当时的结论下得有点武断了,因为这中间还牵涉其他的东西呢.NFTS权限设置.根目录设置.访问目录设置.下面我们就介绍一下. 情况一:NFTS权限已经配置,该组织的根目录已经配置完毕,但是访问目录未设置. NFTS权限设置完毕 该组织的最高

在ASP.NET应用中集成Windows域帐户来进行权限控制

企业应用程序采用域用户来代替独立的用户管理模块的好处很多. 程序本身不需要单独编写用户帐号管理模块 与域用户集成,用户不需要单独记忆用户名口令,可以实现无缝登录 采用与用户方案安全性提升到域用户安全级别 其他好处多多 首先需要配置IIS: 为你的应用单独建立一个web虚拟目录,右键选择属性里的目录安全,权限与访问控制,把"打开匿名访问"不选,仅仅选择"集成Windows权限认证",别的都不要选,确定. 集成域用户来控制用户访问的途经有两种,一种是利用NTFS权限控制

Swift中的Access Control权限控制介绍

  这篇文章主要介绍了Swift中的Access Control权限控制介绍,本文讲解了private.internal.public三个关键字的使用,需要的朋友可以参考下 如果您之前没有接触过权限控制,先来听一个小故事: 小明是五道口工业学院的一个大一新生,最近他有点烦恼,因为同屋经常用他的热水壶,好像那是自己家的一样,可是碍于同学情面,又不好意思说.直到有一天,他和学姐小K吐槽. 学姐听了之后,说:大学集体生活里面,大部分东西都是默认室友可以共用的.如果你不想别人拿,我可以帮你做封印,只要打

分享AD与Server-U集成中权限的控制

呵呵,前几天分享了一篇关于AD与Server-U集成的文章.今天在特意介绍下.AD与Server-U权限控制的问题.其实说通过AD控制权限还是很不确切的,应该说是通过NTFS文件系统的权限进行权限的控制.AD只是控制账户的. 我在上一篇文章说过,在Server-U中进行组织的"目录访问"权限控制与NTFS权限控制是叠加的.现在看来当时的结论下得有点武断了,因为这中间还牵涉其他的东西呢.NFTS权限设置.根目录设置.访问目录设置.下面我们就介绍一下. 情况一:NFTS权限已经配置,该组织

Angular中使用ui router实现系统权限控制及开发遇到问题_AngularJS

前端去实现权限控制听起来有点扯淡(实际也有点扯淡),掩耳盗铃,主要是担心安全问题,但是如果在前后端分离的情况下,需要做一个带有权限控制的后台管理系统,angular基于ui-router应该怎么做呢? 权限的设计中比较常见的就是RBAC基于角色的访问控制,基本思想是,对系统操作的各种权限不是直接授予具体的用户,而是在用户集合与权限集合之间建立一个角色集合.每一种角色对应一组相应的权限. 一旦用户被分配了适当的角色后,该用户就拥有此角色的所有操作权限.这样做的好处是,不必在每次创建用户时都进行分配

权限控制中角色冲突问题

问题描述 权限控制系统中涉及到用户表.角色表.权限表.用户角色表.角色权限表,在权限控制过程中用户拥有多个角色,怎样控制角色拥有权限冲突问题. 解决方案 解决方案二:冲突是指什么?一般都取并集吧,比如rolea有p1.p2.p3,roleb有p3.p5.用户如果同时有这两个角色那就是有4个权限嘛解决方案三:每个角色的权限是不变的变得只是角色