帮酷LOGO
  • 显示原文与译文双语对照的内容
文章标签:Declarative  auth  声明性授权  Flask  Author  FLA  dec  
Flask declarative autorization

  • 源代码名称:flask-bouncer
  • 源代码网址:http://www.github.com/bouncer-app/flask-bouncer
  • flask-bouncer源代码文档
  • flask-bouncer源代码下载
  • Git URL:
    git://www.github.com/bouncer-app/flask-bouncer.git
  • Git Clone代码到本地:
    git clone http://www.github.com/bouncer-app/flask-bouncer
  • Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/bouncer-app/flask-bouncer
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
  • bouncer

    利用安全的Flask 声明式授权

    Build Status

    flask-bouncer 是 Flask 授权库,它限制了给定用户允许访问的资源。 所有权限都定义在一个的单一位置

    chat了- 告诉我密码。

    安装

    pip install flask-bouncer

    用法

    from flask.ext.bouncer import requires, ensure, Bouncer
    app = Flask()
    bouncer = Bouncer(app)# Define your authorization in one place and in english.. .@bouncer.authorization_methoddefdefine_authorization(user, they):
     if user.is_admin:
     they.can(MANAGE, ALL)
     else:
     they.can(READ, ('Article', 'BlogPost'))
     they.can(EDIT, 'Article', lambdaa: a.author_id == user.id)# Then decorate your routes with your conditions.# If it fails it will return a 401@app.route("/articles")@requires(READ, Article)defarticles_index():
     return"A bunch of articles"@app.route("/topsecret")@requires(READ, TopSecretFile)deftopsecret_index():
     return"A bunch of top secret stuff that only admins should see"
    • 在处理特定资源时,请使用 ensure 方法
    from flask.ext.bouncer import requires, ensure@app.route("/articles/<article_id>")@requires(READ, Article)defshow_article(article_id):
     article = Article.find_by_id(article_id)
     # can the current user 'read' the article, if not it will throw a 401 ensure(READ,article)
     return render_template('article.html', article=article)
    • 查看保镖,了解有关定义能力的详细信息
    • 默认情况下,烧瓶卫士查找 current_user 或者 user 存储在 Flask g

    把它锁起来

    可以使用ensure_authorization功能确保应用程序中的所有路由都已经被授权

    bouncer = Bouncer(app, ensure_authorization=True)

    这将检查每个请求,以确保已经发出授权检查( 确保或者要求)

    如果你想跳过某个路线,用 @skip_authorization. 装饰你的路线 就像这样:

    @app.route("/articles")@skip_authorizationdefarticles_index():
     return"A bunch of articles"

    flask支持

    flask是一个扩展,它将基于类的REST视图添加到 Flask 。

    1 ) 定义你的视图,类似于 flask-classy

    from flask.ext.classy import FlaskViewfrom yourapp.models import ArticleclassArticleView(FlaskView)
     # anadditionalclassattributethatyouneedtoaddforflask-bouncer__target_model__ = Articledefindex(self)
     return"Index"
     defget(self, obj_id):
     return"Get "#.. . methods for post, delete (and even put, and patch if you so like

    2 ) 使用和保镖查看视图

    # in your application.py or the likeapp = Flask("classy")
    bouncer = Bouncer(app)
    ArticleView.register(app)# Which classy views do you want to lock down, you can pass multiplebouncer.monitor(ArticleView)

    然后 voila bouncer implicitly将跟随条件隐式添加到路线:

    • 你需要'索引','显示'和'get的'读取'特权'
    • 你需要'新建','放置'和''的'创建'特权'
    • 你需要'编辑'和'patch的'更新'特权'

    如果你想重写缺省需求,只需将 @requires decorator添加到函数

    配置

    current_user

    默认情况下,烧瓶保镖会检查 g 以获取用户或者 current_user 。 你可以通过使用 @bouncer.user_loader 装饰函数来添加定制加载程序

    其他功能

    注释

    • 这个图书馆只关注英镑授权,我们会向其他图书馆( 如烧瓶登录 ) 留下收费

    谢谢 !

    • Ryan Bates,他优秀的ruby 库,这是本图书馆的灵感

    问题/问题

    请随时告诉我 Twitter: @tushman 或者在 https://github.com/jtushman/flask-bouncer 添加问题或者 PRs



    文章标签:auth  FLA  dec  Flask  Author  Declarative  声明性授权  

    Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语