帮酷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  |  如果智培  |  酷兔英语