V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
arbipher
V2EX  ›  程序员

请教下权限设计(不知道是不是这个词)

  •  
  •   arbipher · 2013-12-31 09:19:08 +08:00 · 4750 次点击
    这是一个创建于 3759 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近在学习RESTful的后端。
    比如说一个resource是user,一个resource是post。
    在模型层面,我能用ER图来描述,user的项、post的项、post对user的外键依赖等。

    要涉及权限问题,比如
    通过auth的user才可以新建post,一个user一天只能新建不超过配额的post,一个user不能更新别的用户的post。
    这些东西,有代码之外的东西可以描述吗?就像ER图之于Model。

    还有关于这些东西,有什么好的教材吗?最佳实践之类的。不知道怎么下牙啊。请教各位v2ex大神。

    预祝新年快乐~
    10 条回复    1970-01-01 08:00:00 +08:00
    wubo19842008
        1
    wubo19842008  
       2013-12-31 10:13:51 +08:00   ❤️ 1
    权限设计一般都是用RBAC模型,也就是用户-角色-资源的三者关系
    Keyes
        2
    Keyes  
       2013-12-31 10:17:19 +08:00
    对ER图什么的不了解,GOOGLE了一下有个粗浅的认识,ER图用来表现数据对象的各种关系(现学现卖有错望指点)

    接下来看了一下:“通过auth的user才可以新建post,一个user一天只能新建不超过配额的post,一个user不能更新别的用户的post。”

    这是数据库层面干的事吗?不是业务逻辑层做的吗?需要体现在ER这边吗?
    arbipher
        3
    arbipher  
    OP
       2013-12-31 10:27:55 +08:00
    @Keyes 我没说清楚,sorry。就像“ER图”之于“Model”,用ER来描述 Model,有没有类似的东西,可以在“非代码”的层面描述“权限、配额”这些东西。
    A is to B what C is to D.
    Keyes
        4
    Keyes  
       2013-12-31 10:34:24 +08:00
    @arbipher 啊,你是说:ER图描述Model,____东西可以描述权限、配额类的东西?
    arbipher
        5
    arbipher  
    OP
       2013-12-31 10:37:13 +08:00
    @Keyes 是。。。
    hustlzp
        6
    hustlzp  
       2013-12-31 10:50:37 +08:00   ❤️ 1
    @wubo19842008 感谢分享,让我知道还有RBAC这个概念...
    hustlzp
        7
    hustlzp  
       2013-12-31 10:52:34 +08:00
    Flask的话,Flask-Principal这个插件不错。

    http://pythonhosted.org/Flask-Principal/
    arbipher
        8
    arbipher  
    OP
       2013-12-31 18:12:05 +08:00
    @wubo19842008 我也是第一次指知道RBAC,去wiki、stackoverflow和quora逛了一圈,大概知道是什么东西了。
    我是在看django-rest-framework的文档时想到这个问题的。实例给的权限控制,就是在APIView里面指定,觉得这么硬编码进去不好。
    如果是基于role的话,APIView根据这个角色所在的role的permission来判断。感觉上可行。我试试
    谢谢。
    arbipher
        9
    arbipher  
    OP
       2013-12-31 18:12:48 +08:00
    @hustlzp 我用的django
    hustlzp
        10
    hustlzp  
       2013-12-31 18:39:02 +08:00
    @arbipher django的话应该很成熟了,github上搜一下。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3886 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 04:17 · PVG 12:17 · LAX 21:17 · JFK 00:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.