flask_admin 筆記二 授權和權限


權限當然就是讓有應該權限的用戶能執行某些操作,把沒有權限的用戶限制在外面。Flask-admin提供了幾種方法來處理:

 

1, Http basic Auth

最簡單的身份驗證形式是HTTP基本身份驗證。 它不會干擾你的數據庫模型,也不需要你編寫任何新的視圖邏輯或模板代碼。 所以,當你還在權限開發中,可以考慮作為一個測試的功能;或者可以簡單運用於單用戶的應用。

你可以參考https://flask-basicauth.readthedocs.io/en/latest/

但是這個組件無法一個登錄界面整合到flask-admin中,功能也太簡陋了。

 

2,自己集成權限框架(flask-login 或者 flask-httpAuth)

Flask 提供了一些訪問規則允許你自己去定義一些訪問的實現,你可以自己寫,也可以集成想flask-login這些低層次的框架,然后自己實現訪問控制。Flask-admin提供以下的實例:

class MicroBlogModelView(sqla.ModelView):

 

    def is_accessible(self):

        return login.current_user.is_authenticated

 

    def inaccessible_callback(self, name, **kwargs):

        # redirect to login page if user doesn't have access

        return redirect(url_for('login', next=request.url))

具體的例子,可以查看 https://github.com/flask-admin/Flask-Admin/tree/master/examples/auth-flask-login.

使用這些底層次的框架的缺點就是要自己去實現所有的細節。

 

3,使用flask-sercurity

   如果你想要一個更加精美的解決方案,你可以使用Flask-Security,它是一個更高級的庫。 它具有許多內置的視圖,用於執行用戶注冊,登錄,電子郵件地址確認,密碼重置等常見的功能。

 

唯一復雜的就是使內置的Flask-Security視圖與Flask-Admin模板順利集成,以達到一致性的用戶體驗。 為此,您需要覆蓋內置的Flask-Security模板,並通過將以下內容添加到每個文件的頂部來擴展Flask-Admin基本模板:

{% extends 'admin/master.html' %}
現在,您需要手動傳遞Flask-Admin模板的一些上下文變量,以便從Flask-Security視圖調用時頁面能正確呈現。 定義一個security_context_processor函數將為你處理這個問題:
def security_context_processor():
    return dict(
        admin_base_template=admin.base_template,
        admin_view=admin.index_view,
        h=admin_helpers,
    )
具體可以查看例子:
https://github.com/flask-admin/Flask-Admin/tree/master/examples/auth.

該示例只使用內置的注冊和登錄視圖,但是您可以按照相同的方法來包含其他視圖,例如忘記密碼,發送驗證郵件等。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM