V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
Mrkon
V2EX  ›  Python

对于 web 开发的权限管理

  •  
  •   Mrkon · 2018-07-12 12:36:08 +08:00 · 3367 次点击
    这是一个创建于 2330 天前的主题,其中的信息可能已经有所发展或是发生改变。
    楼主目前使用的是 python falsk 做后端开发,使用了 RBAC 架构作为权限管理。

    但是我有以下疑问:
    1.在查找该用户是否具有权限的时候,采用的方式是:查找用户角色 -> 用户角色对应的权限表 -> 查找该用户是否具备此权限 这样设计合理吗?
    2.如果我要限制用户可以查看多少页的数据(如分为 50 页,100 页),在权限表中是应该设置一个具体的数字,还是直接设定不可更改的一个权限标示就足够
    3.对于像腾讯云这样的网站,所用的定制权限(如使用的机器内存大小,这个难道是购买之后就直接固定了吗?),如果我想通过购买来确定权限,应该如何做

    能给个合理建议吗?谢谢
    11 条回复    2018-07-13 10:15:46 +08:00
    BBCCBB
        1
    BBCCBB  
       2018-07-12 12:45:10 +08:00
    基于资源的权限控制更加灵活.
    Mrkon
        2
    Mrkon  
    OP
       2018-07-12 12:53:26 +08:00
    @BBCCBB 谢谢,有教程或者开源项目作为参考吗?
    joyme
        3
    joyme  
       2018-07-12 16:46:12 +08:00   ❤️ 3
    基于资源的权限控制和基于角色的权限控制的主要区别在于:是否显式的表达出某个角色对于某个资源有某个操作的权限。优点体现在需求变更时的需要改动的代码更少

    这是我的一点总结: https://www.myway5.com/index.php/2018/03/29/%E7%B3%BB%E7%BB%9F%E6%9D%83%E9%99%90%E8%AE%BE%E8%AE%A1%E4%B8%ADrbac%E6%A8%A1%E5%9E%8B%E7%9A%84%E4%BD%BF%E7%94%A8/
    wyds591101
        4
    wyds591101  
       2018-07-12 16:56:29 +08:00
    我觉得 rbac 挺好的。
    Mrkon
        5
    Mrkon  
    OP
       2018-07-12 17:23:10 +08:00
    @joyme 谢谢,但是对于一个网站的权限(例如可查的页数)我在权限表里面应该插入不同的行吗?在这行中我是应该明确的表示 1000 页和用户查看的页数进行大小比较,还是只是一个权限设定(如有这个权限才能看 1000 页以上,如果是这样的话,对于比 1000 页小的权限限制(如 100 页),那就需要将两个权限都加入权限池,这样做是否优雅)
    xkeyideal
        6
    xkeyideal  
       2018-07-12 17:40:44 +08:00
    rbac 在很多场景下就是个鸡肋,不能彻底解决较为复杂的权限问题,比如同一个资源,A 能 CURD,B 仅能 CU 的场景
    joyme
        7
    joyme  
       2018-07-12 17:43:42 +08:00
    我个人是觉得“应该明确的表示 1000 页和用户查看的页数进行大小比较”这种方案会比较好,因为在这个限定发生改变时,代码改动最小
    a68UkLHpycW7ImyV
        8
    a68UkLHpycW7ImyV  
       2018-07-12 22:45:04 +08:00
    将 50 页,100 页存为 2 条权限,然后在用户请求的时候检查一下就行了
    a68UkLHpycW7ImyV
        9
    a68UkLHpycW7ImyV  
       2018-07-12 22:48:04 +08:00
    用户和权限之间还可以再加一个用户组,默认用户组有默认权限这样
    Mrkon
        10
    Mrkon  
    OP
       2018-07-13 09:12:06 +08:00
    @wlbcs 其实这也在我的疑问中。因为我是加了用户组的(如超级管理员等),但是根据一些不错的博客(如 @joyme ),最后还是通过 直接查找是否拥有这项权限 来确定是否返回数据。当然,我认为加了用户组之后管理权限要方便的多,直接赋予角色就行
    dilu
        11
    dilu  
       2018-07-13 10:15:46 +08:00
    auth 授权了解一下 RBAC 都是很老的产物了
    如果我要一级管理员显示某个按钮 二级管理员不显示 RBAC 就做不到了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3905 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 10:24 · PVG 18:24 · LAX 02:24 · JFK 05:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.