浏览 3781 次
锁定老帖子 主题:基于webwork拦截器的权限设计
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-12-08
最后修改:2008-12-25
原理是利用webwork拦截器拦截action,但细节处千差万别,下面看看我的。 先假设一个场景: 1、表单A有CRUD4个操作,分别对应4个权限。 2、每个操作分别对应若干action,如Create操作里包括Aaction、Baction。 3、当用户拥有C权限时,他应该能执行Aaction、Baction。 下面是我的实现: 1、将用户权限放在用户表的权限字段中,如放入字符串“C-R-U-D”。 2、新建一个Purview类,是一个普通java类用于设置权限。如: public class Purview{ private Boolean create; private Boolean retrieve; private Boolean update; …… public Boolean getCreate() { return create; } public void setCreate(Boolean create) { this.create = create; } …… } 3、用户登录时,根据权限字段中的记录,将Purview类中的属性设为true,然后将设置好的Purview类放入session中。如: String yhql = yonghu.getLanaction();//lanaction是权限字段 String[] lanac; if(StringHelper.isNotEmpty(yhql)){ Purview purview = new Purview(); lanac = yhql.split("-"); for(int i=0,len=lanac.length; i<len; i++){ if(lanac[i].equals("C")){ purview.setCreate(true); } else if(lanac[i].equals("R")){ purview.setRetrieve(true); } …… } Map map = ActionContext.getContext().getSession(); map.put("quanli", purview); } 4、当用户执行某个action时,拦截器从session中获取当前用户权限,判断其是否具有访问权限。如: if(purview!=null){//purview为从session中获取的Purview类 if(action instanceof RenAction){//action为Aaction对应的Action类 if(actionName.equals("Aaction")//actionName为xml里的action名 || actionName.equals("Baction") ){ if(!purview.getCreate()){ throw new Exception("对不起,您没有此权限"); } } else if(actionName.equals("Caction")){ if(!purview.getRetrieve()){ throw new Exception("对不起,您没有此权限"); } } …… …… 大概先写这么多吧。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-12-09
楼主:如果用户能访问某个页面,但是对页面上的某个按钮没有权限。那么是这个按钮不显示还是点击按钮是弹出“无权限”的对话框?
|
|
返回顶楼 | |
发表时间:2008-12-09
basibasi 写道 楼主:如果用户能访问某个页面,但是对页面上的某个按钮没有权限。那么是这个按钮不显示还是点击按钮是弹出“无权限”的对话框?
看楼主的意思,应该是根据Map里面的权限值来控制,如果不具有权限的话就不能看到页面上的按钮。 |
|
返回顶楼 | |
发表时间:2008-12-09
basibasi 写道 楼主:如果用户能访问某个页面,但是对页面上的某个按钮没有权限。那么是这个按钮不显示还是点击按钮是弹出“无权限”的对话框? 弹出“无权限”的提示。 |
|
返回顶楼 | |
发表时间:2008-12-09
hdragonh 写道 basibasi 写道 楼主:如果用户能访问某个页面,但是对页面上的某个按钮没有权限。那么是这个按钮不显示还是点击按钮是弹出“无权限”的对话框? 看楼主的意思,应该是根据Map里面的权限值来控制,如果不具有权限的话就不能看到页面上的按钮。 我没有用到Map。目前也还没实现没有权限就看不到页面上的某个按钮。 |
|
返回顶楼 | |
发表时间:2008-12-09
唯快不破 写道 hdragonh 写道 basibasi 写道 楼主:如果用户能访问某个页面,但是对页面上的某个按钮没有权限。那么是这个按钮不显示还是点击按钮是弹出“无权限”的对话框? 看楼主的意思,应该是根据Map里面的权限值来控制,如果不具有权限的话就不能看到页面上的按钮。 我没有用到Map。目前也还没实现没有权限就看不到页面上的某个按钮。 用jsp tag实现 |
|
返回顶楼 | |
发表时间:2009-03-16
xly_971223 写道 唯快不破 写道 hdragonh 写道 basibasi 写道 楼主:如果用户能访问某个页面,但是对页面上的某个按钮没有权限。那么是这个按钮不显示还是点击按钮是弹出“无权限”的对话框? 看楼主的意思,应该是根据Map里面的权限值来控制,如果不具有权限的话就不能看到页面上的按钮。 我没有用到Map。目前也还没实现没有权限就看不到页面上的某个按钮。 用jsp tag实现 怎么用,最多也就是解决了粗粒度权限。比如说,不同模块有不同权限,如何处理? 最简单的也是最常见的,记录级别的权限,以及字段级别的就无能为例了 比如:一个单据,需要总经理看全部,部门经理看部门,员工看自己。。。你总不能在满页面的写<c:if 吧???? |
|
返回顶楼 | |
发表时间:2009-03-16
这只是 C R U D
但是,如有个导出 或者导入 之类的操作 或者 上传 等呢?这还不止 。。。。 这样的话你这个就有点行不通了, 权限权限不只是控制CRUD |
|
返回顶楼 | |