Flask-Security,在蓝图中实现SECURITY_TRACKABLE功能

时间:2018-10-27 16:05:49

标签: python flask flask-security

我将toString功能用于Flask-Security,并且在我的自定义API登录请求处理程序中,我试图确保按照flask-security documentation on login_user()的要求提交数据存储区更改。 / p>

我的登录代码位于一个蓝图中:

println

但是,当用户登录时,出现错误:toString,因为我在蓝图中,而不是应用程序中。我该如何解决?

1 个答案:

答案 0 :(得分:2)

Security()对象决不是Flask应用程序对象的直接属性。您在这里的错误是appBlueprint对象,这使事情更加混乱。无论如何,您通常应该app用于蓝图对象。

您可以从首先创建Security(...)实例的模块中导入对象,也可以通过{ {3}}:

extensions

接下来,您通常希望在响应完成后提交访问权限 ,因为这有助于最终用户更快地获得结果,并且还可以记录响应状态。使用current_app reference在响应后运行提交:

from flask import current_app

security = current_app.extensions['security']  # or reference .datastore, etc.

并在您看来使用:

from flask import current_app, after_this_request

def flask_security_datastore_commit(response=None):
    datastore = current_app.extensions['security'].datastore
    datastore.commit()
    return response