使用权限标签控制View层展示的内容
来源:互联网 发布:原油库存数据怎么看 编辑:程序博客网 时间:2024/04/30 00:12
在实际应用中,我们经常需要根据当前用户的操作权限来判断是否显示一新功能。如在论坛系统中,只有版主及管理才能删除贴子,因此在一般用户打开一个贴子的时候,就不需要出现“删除”这个连接。
权限系统标签接口的设计,在大多数应用中,以下接口中两个方法基本能满足大多数需求。
public interface AuthorizationUtil {
/**
* 根据名称判断用户角色,从而判断用户是否刻有该权限.roleName可以是单独的名称,大小写可以任意.可以包含空格等.
* 若要使用多个角色,可以使用+、|、~、,等符号来表示组合关系
* 使用方法:#if($ROLE.is("ADMIN"))<a href="javascript:doDel()">删除</a>#end
* 或:#if($ROLE.is("AMDIN,Manager"))<a href="">删除所有</a>#end
* @param roleName
* @return
*/
public boolean is(String roleName);
/**
* 判断一个用户是否对指定的对象有指定的操作权限
* @param operation 操作,"del","create","update","read"等
* 使用方法:#if($ROLE.is("del",$obj))<a href="">删除该记录</a>#end
* @param obj 操作的对象
* @return 如果具有操作权限
*/
public boolean is(String operation,Object obj);
}
权限系统标签接口的设计,在大多数应用中,以下接口中两个方法基本能满足大多数需求。
public interface AuthorizationUtil {
/**
* 根据名称判断用户角色,从而判断用户是否刻有该权限.roleName可以是单独的名称,大小写可以任意.可以包含空格等.
* 若要使用多个角色,可以使用+、|、~、,等符号来表示组合关系
* 使用方法:#if($ROLE.is("ADMIN"))<a href="javascript:doDel()">删除</a>#end
* 或:#if($ROLE.is("AMDIN,Manager"))<a href="">删除所有</a>#end
* @param roleName
* @return
*/
public boolean is(String roleName);
/**
* 判断一个用户是否对指定的对象有指定的操作权限
* @param operation 操作,"del","create","update","read"等
* 使用方法:#if($ROLE.is("del",$obj))<a href="">删除该记录</a>#end
* @param obj 操作的对象
* @return 如果具有操作权限
*/
public boolean is(String operation,Object obj);
}
在昨晚修改EasyJWeb的时候,在框架处理器中增加了一个全局Util的Map。同时增加了一个跟EasyJF的权限控制系统结合的AuthorizationUtil实现。下面是主要代码:
protected void createUtilContext(Context context) {
Object authorizationUtil = FrameworkEngine.getContainer()
.getBean(com.easyjf.util.AuthorizationUtil.class);
if (authorizationUtil != null) {
globalUtils.put("AUTH", authorizationUtil);
globalUtils.put("ROLE", authorizationUtil);
}
}
这样,在基于Spring2+JPA+EasyJWeb的应用中,可以在模板页面中使用下面的Velocity角本来进行权限控制。如:
#if($AUTH.is("ADMIN")) <a href='doDel();'>删除</a>#end
权限/角色的名称可以在系统运行的过程中自由设定。这样问题变得简单多了,不再需要访问底层的权限系统,也不在需要复杂的标签系统,就是调用这两个方法,而具这是在每一个展示的View中都开放的全局功能。
当然,也可以扩展一下模板标签系统,使用<Auth:role="ADMIN"><a href='doDel();'>删除</a></Auth>。当然我不喜欢后一种用法,因为总是会让页面人员把这个标签跟其它的标签搞混淆,而且也容易误删除,还是第一种方法看起直接,对于接受过我们半小时Velocity标签培训的页面制作及美工人员也应该会有同感。
当然,如何让权限控制变得更加灵活,View层的使用更加方便直接、简易,想听听大家的看法。
- 使用权限标签控制View层展示的内容
- 使用权限标签控制View层展示的内容
- 使用权限标签控制View层展示的内容
- 使用权限标签控制View层展示的内容
- 使用权限标签控制View层展示的内容
- 使用权限标签控制View层展示的内容
- 使用权限标签控制View层展示的内容
- 使用权限标签控制View层展示的内容
- 使用权限标签控制View层展示的内容
- 使用权限标签控制View层展示的内容
- 使用权限标签控制View层展示的内容
- 使用权限标签控制View层展示的内容
- 使用权限标签控制View层展示的内容
- 使用权限标签控制View层展示的内容
- 使用权限标签控制View层展示的内容
- 标签内容的详细展示与收起
- a标签跳转到配置有angular路由的页面,并控制显示view中的内容
- 简单标签的使用自定义标签控制页面内容(标签体)是否输出、
- 6.14雨 购买基金
- 破解JBuilder2005
- asp.net (C#)DropDownList从不同数据库进行数据绑定
- javascript实现下拉列表框选择时另一下拉列表框的值相应变化
- MapXtreme2005 绑定数据表X,Y字段
- 使用权限标签控制View层展示的内容
- 使用sqlserver2000存储过程分页小例
- appfuse是什么
- 浅析Windows通信编程
- Java中的正则表达式的使用
- JAVA字符集
- dataset使用详解
- ASP.NET开发工具
- UTF-8 and Unicode FAQ