动态管理菜单的疑问

最近在做一个用户管理系统,需要分配权限,目前有思路,但是还没有好的解决方案。
由于系统比较小,数据库设计尽量以简单为主。于是,数据库设计如下:
user:username,password,authority_id;
authority:authority_id,authority;
两个表,用户表和权限表。用户的表字段分别为用户名、用户密码、权限,权限表字段为权限编号和权限名称。这样设计的思路是用户表里的authority字段记录 用户权限编号(用户所拥有的权限id的集合,用#连接。比如“1#2”表示该用户拥有权限id为1和2 的功能)。具体的权限信息记录在authority表中。
由于权限功能没有固定,所以需要动态维护,不知道权限总数,所以无法在表中一一建立对应的权限bool类型的字段。客户需要实现动态菜单,对应不同的用户生成不同的菜单。目前想法是获得user中的authority_id字段值,然后用分割函数,获得具体的authority_id数组。然后根据数组中的值,就可以在authority表中找对对应权限。虽然已经实现菜单显示,但是由于authority_id并不是连续的,authority_id也不是固定长度的,所以在显示菜单时,如何快速高效的实现,我还没有想到好的办法。
举个例子
user(user,123456,1#3#4)这样一条记录。
user拥有的权限是1、3、4。通过分割后获得的数组是长度为3的权限数组,authority_user[0]="1",authority_user[1]="3",authority_user[2]="4"。根据这个动态数组中的权限,在菜单页面显示动态菜单。目前遇到的问题是,动态菜单是通过循环检查匹配来操作的。我觉得这样不是很好,没有想到更好的办法。

添加新评论