如何覆盖 flask-security 的登录?
how to override login of flask-security?
我想在用户登录时进行一些自定义。问题是该项目正在使用隐式处理用户登录的 flask-security。
我想在用户登录的时候查看数据库中用户的一些记录
如何覆盖 flask-security 中的 "login" 函数?
我看到了 similar post,尝试过但没有用。
另外,这并不是我想要做的。
对于某些用户,我可能需要停止默认行为。
所以,有人遇到过这种问题吗?我该怎么做?
谢谢!
您可以在设置 Flask-Security 时覆盖登录表单:
user_datastore = SQLAlchemyUserDatastore(db, User, Role)
security = Security(app, user_datastore, login_form=CustomLoginForm)
然后创建扩展默认 LoginForm 的自定义登录表单 class。并覆盖验证函数以在登录尝试之前或之后执行操作。
from flask_security.forms import LoginForm
class CustomLoginForm(LoginForm):
def validate(self):
# Put code here if you want to do stuff before login attempt
response = super(CustomLoginForm, self).validate()
# Put code here if you want to do stuff after login attempt
return response
根据登录是否成功,"reponse" 将是 True 或 False。如果您想检查登录尝试期间可能发生的错误,请参阅 "self.errors"
您好,
凯文 ;)
注册 flask 安全扩展后,您可以创建一个具有完全相同 name/route 的端点,它应该覆盖 Flask-security 注册的端点。
如果您使用的是蓝图,请确保在注册 Flask-security 之前注册您的蓝图。
我想在用户登录时进行一些自定义。问题是该项目正在使用隐式处理用户登录的 flask-security。 我想在用户登录的时候查看数据库中用户的一些记录
如何覆盖 flask-security 中的 "login" 函数?
我看到了 similar post,尝试过但没有用。 另外,这并不是我想要做的。 对于某些用户,我可能需要停止默认行为。
所以,有人遇到过这种问题吗?我该怎么做?
谢谢!
您可以在设置 Flask-Security 时覆盖登录表单:
user_datastore = SQLAlchemyUserDatastore(db, User, Role)
security = Security(app, user_datastore, login_form=CustomLoginForm)
然后创建扩展默认 LoginForm 的自定义登录表单 class。并覆盖验证函数以在登录尝试之前或之后执行操作。
from flask_security.forms import LoginForm
class CustomLoginForm(LoginForm):
def validate(self):
# Put code here if you want to do stuff before login attempt
response = super(CustomLoginForm, self).validate()
# Put code here if you want to do stuff after login attempt
return response
根据登录是否成功,"reponse" 将是 True 或 False。如果您想检查登录尝试期间可能发生的错误,请参阅 "self.errors"
您好, 凯文 ;)
注册 flask 安全扩展后,您可以创建一个具有完全相同 name/route 的端点,它应该覆盖 Flask-security 注册的端点。
如果您使用的是蓝图,请确保在注册 Flask-security 之前注册您的蓝图。