对于网站后台用户权限的管理,初步有二个想法,不知道那种方法比较合理一些。
方法一:权限保存在用户表的empower字段中
把后台的每个功能预定义一个编号或代码,例如文章管理为1,会员管理为2,公告管理为3,广告管理为4,链接管理为5,超级管理为10。
那么如果用户A具有文章、公告与链接管理的权限,则用户A的empower字段的内容为:1,3,5。在用户A进入某个功能页面时,先判断该功能预定义的编号或代码是否存在用户A的empower字段中。使用这种方法,可以在用户登录时即把empower字段的内容存放在session,可以避免多次查询数据库。方法二:权限保存在单独的权限表中
创建一个单独的用户权限表,字段为用户名以及各功能,如果用户A具有某几个功能的使用权限,则在用户权限表中,用户A具有使用权的那几个功能字段的内容为1,其余为0。
那么如果用户A进入文章管理的页面时,则先查询用户权限表中用户A的文章管理字段的内容是否为1,如果为1允许用户A使用文章管理,为0就不允许用户A使用。
这种方法,在用户每次进入某个功能进行操作时,都要读取一次数据库,但这种管理权限比较清析且方便扩允新权限。请高手给予意见,谢谢。

解决方案 »

  1.   

    1.个人感觉第二种设计相对来说思路清晰。
    2.用第二种设计,当用户登陆时,select ....a_table....left join ....b_table....然后session。
    3.其实session和mysql取数据那个速度快,性能更优,还需要结合现实情况来定。
      

  2.   

    第二种方法比较灵活,也同样可以把权限一次取出后存在session里。
    第二种方法的缺点是管理起来比较麻烦。
      

  3.   

    用用户组
    比如:超级管理员组 对应权限 1,2,3,4,6...
        编辑组      对应权限 ,2,3
    添加用户的时候,要指定一个用户组
    登录后把对应组的权限赋值给SESSION,然后判断是否有权限!~
      

  4.   

    基于RBAC的角色访问控制来设计吧,如果是中型以上的程序,且是MVC模式的话,还是必须要用到RBAC的