上一周负责做了一下权限管理这一块,今天基本收工了。权限管理这个板块要做的话可以有很多讲究,这里只是记录一下其中菜单管理大致的实现机制,然后分析一下这种实现方案的优势和弊端吧。
1.先用一个独立的管理中心(Manager Center, MC)系统来构建系统菜单目录,这里不光记录系统有哪些菜单,而且还能建立菜单层级关系,以及每个菜单的属性(菜单名称,菜单编号,菜单样式,URL等等)。所以这个管理系统可以是十分复杂的,同一个管理系统可以用于管理不同系统的菜单权限(先选择系统,再构建菜单)。这个系统,是公司已经构建好了的,所以使用起来十分方便。
2.在构建了菜单目录以及记录系统菜单属性后,就需要再这个独立MC系统上来进行授权操作了,所谓授权操作,也就是把他和特定的用户名关联起来,这样一来,用户登录后,就可以根据用户名在MC系统中获取其所有的可访问的菜单。
3.在用户登录后,通过用户名作为参数来调用MC系统提供的服务,然后获取其可以访问的所有菜单信息并保存在session当中,然后前端页面就可以从session中去迭代出可以访问的菜单选项。这里需要注意的是,一个页面可以有多个不同类别的菜单,比如导航菜单,主要功能菜单。这些菜单会需要使用相关的迭代标签来实现。所以这里自己设计的解决方案是,在MC中使用一个字段来记录菜单的类别,这样在同一个页面,只需要根据类别就能够将不同的菜单组给迭代出来了。
好处:1.独立的权限管理系统,可以管理菜单,或者更细粒度的权限,比如某个按钮,下拉框等等。2.安全性提高,菜单不写死在前台,而是用户登录后从后台(MC服务)获取。 3. 可配置性提高,对于菜单样式以及url等信息的修改,可以直接在MC系统上完成,无需修改系统代码。
短板:1.用户登录后加载的信息变多。2.自己构建MC系统的话,代价十分昂贵。