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
qile1
V2EX  ›  Python

Flask 中利用 url_map 进行简单的权限管理的一种思路

  •  
  •   qile1 · 2019-06-30 23:15:51 +08:00 · 2797 次点击
    这是一个创建于 2007 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近在弄 flask 简单的权限管理,想到一种实现方式:

    利用 url_map 把所有的连接路径导出

    Map([<Rule '/topics/create' (GET, OPTIONS, HEAD, POST) -> topics.cre
     <Rule '/topics/latest' (GET, OPTIONS, HEAD) -> topics.latest>,
     <Rule '/users/setting' (GET, OPTIONS, HEAD, POST) -> users.setting>
     <Rule '/auth/signout' (GET, OPTIONS, HEAD) -> auth.signout>,
     <Rule '/auth/signin' (GET, OPTIONS, HEAD, POST) -> auth.signin>,
     <Rule '/auth/signup' (GET, OPTIONS, HEAD, POST) -> auth.signup>,
     <Rule '/auth/reset' (GET, OPTIONS, HEAD, POST) -> auth.reset>,
     <Rule '/auth/find' (GET, OPTIONS, HEAD, POST) -> auth.find>,
     <Rule '/topics/' (GET, OPTIONS, HEAD) -> topics.index>,
     <Rule '/' (GET, OPTIONS, HEAD) -> frontend.index>,
     <Rule '/topics/<id>/reply' (OPTIONS, POST) -> topics.reply>,
     <Rule '/topics/<id>' (GET, OPTIONS, HEAD) -> topics.topic>,
     <Rule '/static/<filename>' (GET, OPTIONS, HEAD) -> static>,
     <Rule '/users/<username>' (GET, OPTIONS, HEAD) -> users.index>])
    

    然后在 flask 里面添加权限控制页面将每个路径授权给用户。 具体方式为:数据库用户表增加一列,把允许的内容存为字典或者 json 串。每次请求时候比对路径是否在字典里面如果在就允许访问。 扩展开来,类似传参和 get、post 不同的访问也可以很方便的判断。 具体 url_map 使用参考这里: https://segmentfault.com/q/1010000000698148

    但是现在有个问题是当启用了 blueprint 后,url_map 居然无法直接显示,大家有啥办法没?

    2 条回复    2019-06-30 23:35:12 +08:00
    lhx2008
        1
    lhx2008  
       2019-06-30 23:27:44 +08:00 via Android
    url_map 倒不是关键问题,看一下源码或者搜索一下应该就能解决。主要是需要这么细粒度的权限管理吗,还要查数据库,而且耦合还很严重,加页面得更新数据库
    qile1
        2
    qile1  
    OP
       2019-06-30 23:35:12 +08:00
    @lhx2008 加页面就是加功能,肯定得对用户授权吧,如果用户信息保存在数据库,那保存在数据库用户的表里面,不是最合适方式吗。如果不是保存在表里,平常权限应该保存哪里呢?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2804 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 07:08 · PVG 15:08 · LAX 23:08 · JFK 02:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.