我是写作瓶子的新手,目前使用flask-principal
作为我的授权机制。
当用户尝试访问没有所需权限的URL时,flask-principal会引发PermissionDenied
例外。
它导致我的系统抛出500 internal server
错误。
如何捕获特定异常并将用户重定向到警告页面? 如果您可以共享代码示例,那将非常有用。
答案 0 :(得分:12)
您可以告诉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。