【发布时间】:2020-08-19 10:56:11
【问题描述】:
我正在使用 Flask-Security 扩展程序,但我一生都无法弄清楚在扩展程序初始化时我可以在扩展程序中的哪个位置传递未经授权的处理程序。这对我很重要,因为我不想在用户没有所需权限时将他们重定向到另一个端点。我希望他们在他们所在的 url 中看到它,因此他们保留他们无权访问的 url 的上下文。我的解决方法是在第一个请求到来之前将方法修补到扩展上:
@app.before_first_request
def monkey_patch():
"""Monkey patching the flasksecurity callback"""
current_app.extensions['security']._unauthorized_callback=lambda: abort(401)
然后我使用我的 app.errorhandler 处理错误并返回适当的响应代码。
@app.errorhandler(401)
def unauthorized(e):
return 'You not authorized to visit this page', 401
有人知道更好的方法吗?
【问题讨论】:
标签: python flask flask-security