系统权限根据会员按组别划分,权限按组别分配的方式进行管理。管理原则按白名单方式进行,即除非是指定享有某种操作的权限,否则都是禁止的。会员获 得权限的方式是被分配到某个有权限设定的组。有两个特殊的约定组:ANY和ALL,前者指任何用户,即使是没有登录;后者指已经登录的用户,不管他是不是 分配组别。简单地说,各种公开内容的display权限是赋予ANY。所有的定义都在WEB-INF/*.xml中进行。
<privileges>
<privilege name="dochid" fld="dochid" vname="id" scope="page.thehome"/>
<privilege name="blogid" fld="blogid" vname="id" scope="page.theblog"/>
<privilege name="owner" fld="author" vname="name" scope="visitor"/>
<!--
<privilege name="SECTION"/>
-->
<display>ANY</display>
<append>ALL</append>
<roles>SECTION,articleadmin</roles>
</privileges>
权限是指已经定义的某种操作权力;包括访问页面的权力;访问操作(action.cgi)的权力;访问内容类型(对应数据库表格)的权力;以及更新 表格自已的记录的权力。权限一般有display浏览,modify更改;append添加;delete/resume删除等类型,只要预有定义,可以 在使用中任意扩展操作类型。
权限控制主要通过四个层次进行:
1、对页面访问的控制;主要通过hanva:visitor标签进行,标签定义参考tlds/hanva.xml;当auth=true时,标签就 会对所在会员标识的组别进行鉴定,确认是否有权限访问这个组。每个页可以通过引进hanva:default的方式确定一个页面的科室名称,从而确定是否 可以访问各个科室的页面。
2、对访问内容类型的控制:通过涉及到内容访问的标签,以及涉及到内容操作的cgi内部的控制,可以分别控制用户按组权限归属只能访问允许进行的内 容操作;操作定义在dao.xml的entity.privileges中进行;包括全权组;分类权组两种。全权组可以获得该组别的完全权限,分类权组是 只能获得分类权限。
3、行记录控制;可以按预定义的要求实现行记录控制,如控制只能访问自已记录(如自已的会员属性);或者按科室进行控制。
123三项的定义都是在dao.xml中进行,可以参考其中的权限部分文档说明。或者在http://zwwwxy.blogchina.com/blog/category.php?id=122830&pageno=2中有相应的说明。
4、科室控制。可以实现对科室页面和科室自有记录的控制;但定义的地方是在medsections.xml;科室实际上是一个包括组别/名称定义的 容器(集合),但相应面向科室的管理会令科室容器的内容大幅度增加。科室中可以定义多个组,只有这些组中的用户才能访问为科室定义的页面和记录操作。