现在的位置: 首页 > 综合 > 正文

在action层进行权限控制

2013年10月18日 ⁄ 综合 ⁄ 共 784字 ⁄ 字号 评论关闭
权限控制是每个项目必不可少的一块。在最近的一个MVC模式(Struts)的实践当中,在进行权限访问控制时做了一个这样的尝试,即在action当中进行权限控制,它所控制的粒度可以到用户的每个操作上,比如说增删改查,当然,我这里所说的权限是控制到功能级的,系统还没有复杂到对实例级别的控制。
具体的例子如下:先定义一个BaseDispatchAction,此类继承Struts当中的DispatchAction,其中有个权限检查的方法  
protected boolean checkPermit(HttpServletRequest request, String funcId,String operationId)。
funcId指的是当前的栏目,operationId为当前栏目的功能操作ID,将功能ID与操作ID在checkPermit方法当中与当前用户所在的角色资源进行判断,看是否符合当前操作。
比如具体到一个新增操作,可以在相对应的功能操作表中定义对应的操作ID。在接下来的具体某个action当中,先继承BaseDispatchAction,比如用户管理模块的UserManangeAction。然后在新增方法当中加入如下代码控制,   
   //判断是否有此方法的操作权限
    String funcId = httpServletRequest.getParameter("funcId");
    if (checkPermit(httpServletRequest, funcId, Constants.QUERY)) {
      return forwardError(actionMapping, httpServletRequest,
                          "error.checkPermit");
    }

这样,对具体的某个功能操作就进行了很好的控制。

抱歉!评论已关闭.