用户可以申请店面,一个用户可以拥有多个店面,不同的店面可以申请不同的功能,不同的功能拥有不同的权限,申请的店面上还可以注册会员,同时还可以给这些会员分配不同的前台,后台权限,这个权限模型如何设计?Tips:目前市面上的多用户开源程序,都是固化了店面类型,比如我给所有店面使用的功能数为10,初级店面拥有5个,中级店面拥有8个,高级店面拥有10个,用户组也是固化了的,比如DX的群组功能中,关于成员的分类固化成群主,副群主,明星会员,普通会员4个组别,这样,也就固化了用户的权限。当某一天某个用户要开一个新的店面,要求的功能数为6个,这个时候就不得不添加一个功能数为6个且功能为用户要求的那6个的店面类别,或者干脆不改,如果用户想在自己店面后台增加一个用户组来专门管理某一功能的时候,这个时候又必须得更改整个系统,所以,我觉得这些都不是太理想,请大侠赐教吧!

解决方案 »

  1.   

    感觉有点和mysql的权限类似,呵呵。
      

  2.   

    你自己把问题搞复杂了而已,实际上只存在两种东西,1,权限,2,用户. 编写程序的时候,你可以将多个权限分配为一组便于管理,权限组提供一个hasAuth的方法.写程序的时候只认权限不认人,也就是只认权限组的hasAuth方法的结果.(hasAuth根据你的具体业务逻辑编写,比如有2个店铺的用户可以自动获得XXX权限.)程序入口处根据用户得到权限组.抓住这几点,多复杂的权限都可以很轻松搞定.
      

  3.   


    本质上,只有两种东西:用户和资源,而用户和资源之间的关系,就是“访问权限”。你说只有“权限和用户”,差不多,表达方式的差异而已,问题不在这儿。问题在于,如果只依照最原始的权限模型,那么“授权”工作将是一个非常繁琐的管理工作,每个用户来了,你都得逐个为他指派哪个资源能访问,哪个资源不能访问。所以,有的系统定义了“组”的概念,有的系统定义了“角色”的概念,其实都是为了简化授权管理工作。因为预先已经定义了若干种“授权组合”,那么对于每个用户来说,给他指派几个预定义的“授权组合”就 OK 了。而楼主的问题,正在于如何定义一种“授权模型”,才能很好地应对那些需求。虚的说了一堆,落实下来,我看还是得先回答 1 楼的那两个问题  :)■□■□■□■□■□■□■□■
    □             □
    ■  忍以明志 勤以致远  ■
    □             □
    ■□■□■□■□■□■□■□■
    基于CSDN论坛提供的插件扩展功能,自己做了个签名档工具,分享给大家,欢迎技术交流 :)
      

  4.   

    我试着归纳一下,
    创建4个表:
    1.店面    1个用户 : N个店面
    2.功能    1个店面  : N个功能
    3.角色(控制权限)  1个角色 : N个用户  , 1个功能 :(可分配给) N个角色
    4.用户 (这个就不说了,是Use Case的主体)创建角色是为了更合理的控制用户的行为。往往一个角色可以对应一组功能,单一功能又可以重复分配给多个角色。
      

  5.   

    只能说类似,不敢说雷同,mysql里的库不能当作店铺,因为每一个库都拥有为mysql库所设计的所有功能,而我系统里的单个店铺,不一定拥有为店铺所设计的所有功能:)
      

  6.   

    我想写东西的人,都知道一个用户+操作+资源可以判别该用户是否拥有还是不拥有这个权限吧,也应该知道如何过滤请求(不管是filter还是AOP),现在我的问题是如何设计这两套权限模型,不在于如何去检查:)