这里有必要先对权限控制方式本身做一下讨论,有些系统用菜单进行权限控制,比如"新建客户","浏览客户",往往用操作名加上一个资源名代表一个权限,这样的权限控制有一个缺陷,就是一般漏掉了一个资源范围,比如浏览什么样的客户,就没有说明.当然也可以加上,比如浏览个人客户,浏览部门客户,浏览公司客户,但是随着需要控制资源类型的增加,通过不断增加菜单项来进行控制,并不是一个很好的方法.在b/s系统中的菜单控制,有2重意义,一是真正的菜单,没有权限的用户就看不到相应的菜单项,另外一个为了防止用户任意提交信息,在服务器端对用户提交的url进行检查,看是不是有这个权限.比如对于用户请求的listcus.do就要先检查用户是否有访问这个url的权限: public class listcusaction extends action{ ... public actionforward execute(...){ ... //必须提供这样的检查的方法. permitutil.checkpermit(userid,url); list = dao.query(sql); ... }} 另外一种控制办法是对操作与操作资源定义权限,比如用户a可以对客户进行修改操作.这样细粒度的权限控制对程序的扩展性与安全性有很大好处,但实现比前一种费时,下面通过分析说明2种方式的特点. 【推荐阅读:构建自己的基于 Java 的超级计算机】
一个客户系统最基本的功能是对客户的创建,修改,删除与查询.实现这样的功能通常是在数据库中建一个customer表,然后通过程序实现以上基本功能.在一个个人环境的应用中,一个用户可以对所有的客户进行任意操作,基本不存在权限控制问题.在多用户系统中,客户属于一个人或者一群人,而对客户的操作权限也不可能是人人一样.所以需要对用户的操作做权限控制.
作为客户系统最简单的一种考虑,是每个用户管理自己的客户.这种请况下,我们通过在customer表中增加一个用户字段,就可以知道这个客户对应于哪一个用户.... 下一页