博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用权限标签控制View层展示的内容
阅读量:4192 次
发布时间:2019-05-26

本文共 1439 字,大约阅读时间需要 4 分钟。

  在实际应用中,我们经常需要根据当前用户的操作权限来判断是否显示一新功能。如在论坛系统中,只有版主及管理才能删除贴子,因此在一般用户打开一个贴子的时候,就不需要出现“删除”这个连接。
  权限系统标签接口的设计,在大多数应用中,以下接口中两个方法基本能满足大多数需求。
public interface AuthorizationUtil {
 /**
  * 根据名称判断用户角色,从而判断用户是否刻有该权限.roleName可以是单独的名称,大小写可以任意.可以包含空格等.
  * 若要使用多个角色,可以使用+、|、~、,等符号来表示组合关系
  * 使用方法:#if($ROLE.is("ADMIN")) 删除#end
  * 或:#if($ROLE.is("AMDIN,Manager")) #end 
  * @param roleName
  * @return
  */
 public boolean is(String roleName);
 /**
  * 判断一个用户是否对指定的对象有指定的操作权限
  * @param operation 操作,"del","create","update","read"等
  * 使用方法:#if($ROLE.is("del",$obj)) #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")) #end
 
  权限/角色的名称可以在系统运行的过程中自由设定。这样问题变得简单多了,不再需要访问底层的权限系统,也不在需要复杂的标签系统,就是调用这两个方法,而具这是在每一个展示的View中都开放的全局功能。
  当然,也可以扩展一下模板标签系统,使用 。当然我不喜欢后一种用法,因为总是会让页面人员把这个标签跟其它的标签搞混淆,而且也容易误删除,还是第一种方法看起直接,对于接受过我们半小时Velocity标签培训的页面制作及美工人员也应该会有同感。
 
  当然,如何让权限控制变得更加灵活,View层的使用更加方便直接、简易,想听听大家的看法。
 

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1651586

你可能感兴趣的文章
CentOS 7.0,启用iptables防火墙(转)
查看>>
DISCUZ浅析之COOKIE篇
查看>>
实战DDD(Domain-Driven Design领域驱动设计:Evans DDD)
查看>>
SSH中各个框架的作用以及Spring AOP,IOC,DI详解
查看>>
openstack juno 配置vmware(vcenter、vsphere)
查看>>
远程debug调试(eclipse)之openstack windows
查看>>
PAAS平台对比:OpenShift VS CloudFoundry【51CTO调研报告】
查看>>
JAX-RS(java restful实现讲解)(转)
查看>>
Spring MVC与JAX-RS比较与分析
查看>>
openstack官方docker介绍
查看>>
头痛与早餐
查看>>
[转]在ASP.NET 2.0中操作数据::创建一个数据访问层
查看>>
Linux命令之chmod详解
查看>>
【java小程序实战】小程序注销功能实现
查看>>
Java中子类能否继承父类的私有属性和方法
查看>>
JVM内存模型详解
查看>>
(二)Git--工作区和暂存区、管理修改与撤销
查看>>
(七)Git--自定义Git
查看>>
(五)Git--分支管理
查看>>
(四)Git--远程仓库
查看>>