需要登录 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 中的某些蓝图?的主要内容,如果未能解决你的问题,请参考以下文章