需要登录 Flask 中的某些蓝图?

Posted

技术标签:

【中文标题】需要登录 Flask 中的某些蓝图?【英文标题】:Require login for certain blueprints in Flask? 【发布时间】:2012-01-20 02:45:45 【问题描述】:

在 Flask 中向蓝图添加访问控制的常用方法是什么?

例如,我有一个名为admin 的蓝图和url_prefix='/admin'

如何强制/admin 下的所有视图必须首先验证超级用户身份?

【问题讨论】:

【参考方案1】:

找到它http://flask.pocoo.org/snippets/59/

from flask import Blueprint
from flask import redirect, request
from google.appengine.api import users

bp = Blueprint('admin', __name__)

@bp.before_request
def restrict_bp_to_admins():
    if not users.is_current_user_admin():
        return redirect(users.create_login_url(request.url))

【讨论】:

如果我不希望我的蓝图显式依赖于身份验证模块怎么办?我只希望app.register_blueprint 部分依赖于身份验证,这样我就可以用多个身份验证后端实例化同一个蓝图? @TamasHegedus 您可以在 register_blueprint 之前添加安全性。例如如果是 rq-dashboard,``@rq_dashboard.blueprint.before_request def restrict_bp_to_users(): 如果不是 current_user.is_authenticated: return redirect(url_for('main.index')) app.register_blueprint(rq_dashboard.blueprint, url_prefix="/ rq") ``【参考方案2】:

http://packages.python.org/Flask-Principal/ 会拯救你的灵魂 =)

【讨论】:

以上是关于需要登录 Flask 中的某些蓝图?的主要内容,如果未能解决你的问题,请参考以下文章

flask中的蓝图 Blueprint

python框架之Flask基础篇-------- 其他操作

第八篇 Flask中的蓝图

如何在具有多个蓝图的烧瓶中处理登录?

Flask--路由, 配置, 蓝图

深入浅出Flask:Flask的蓝图插件化