8

我是编写烧瓶的新手,目前flask-principal用作我的授权机制。当用户尝试在没有所需权限的情况下访问 url 时,flask-principal 会引发PermissionDenied异常。

它会导致我的系统抛出500 internal server错误。

如何捕获特定异常并将用户重定向到警告页面?如果您可以分享一个代码示例,那将非常有帮助。

4

1 回答 1

17

你可以告诉 Flask-Principal 你想提出一个特定的 HTTP 错误代码:

@app.route('/admin')
@admin_permission.require(http_exception=403)
def admin(request):
    # ...

现在flask.abort()将被调用而不是 raise PermissionDenied。对于 403 错误代码,您可以注册一个错误处理程序

@app.errorhandler(403)
def page_not_found(e):
    session['redirected_from'] = request.url
    return redirect(url_for('users.login'))

whereurl_for('users.login')将返回登录页面的路由 URL。

于 2013-11-19T11:06:14.727 回答