python – 处理PermissionDenied异常的Flask-Principal最佳实践

前端之家收集整理的这篇文章主要介绍了python – 处理PermissionDenied异常的Flask-Principal最佳实践前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我是写新瓶子的新手,目前使用flask-principal作为我的授权机制.
用户尝试访问没有所需权限的URL时,flask-principal会引发PermissionDenied Exception.

它导致我的系统抛出500内部服务器错误.

我怎样才能捕获特定的异常并将用户重定向到警告页面呢?
如果您可以共享代码示例,那将非常有用.

解决方法

您可以告诉Flask-Principal您要引发特定的HTTP错误代码
@app.route('/admin')
@admin_permission.require(http_exception=403)
def admin(request):
    # ...

现在将调用flask.abort()而不是提升PermissionDenied.对于403错误代码,您可以注册error handler

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

其中url_for(‘users.login’)将返回登录页面的路由URL.

猜你在找的Python相关文章