Flask-Security覆盖注册视图

3
有没有一种方便的方法来覆盖Flask-Security中的注册视图?我对内置的注册视图非常满意,但我需要它仅在身份验证后和特定角色才能访问。
我尝试像这样覆盖它(使用SECURITY_REGISTER_URL='/register/'),但这只是采用了内置函数,我的完全被忽略:
@app.route('/register/')
@login_required
@roles_required('superuser')
def register():
    """View function which handles a registration request."""
    ...

所以问题是 - 我是否需要从头编写注册视图并禁用Flask-Security的注册?
我也考虑过在register_user.html模板中检查用户登录/角色,并可能重定向回主页,但我不确定这是否是实现此目的的正确方法...
1个回答

3
几个小时后,我终于成功了。在注册路由@app.route('/register/', methods=['GET', 'POST'])时,我忘记指定方法。如果禁用原始的Flask-Security注册视图(SECURITY_REGISTERABLE = False),它就像魔法般地工作!
另外,当你想覆盖一些来自Flask-Security的视图时,这些视图不能那么容易地禁用,例如登录,您必须执行与上述相同的操作,但是首先要注册您的视图/蓝图!

在与Flask-Security的长时间斗争后,我终于找到了这个答案,并最终让用户注册在我的项目中工作。谢谢!奇怪的是,我的'/register'路由以前可以工作,然后不知何故被Flask-Security接管了。禁用它是正确的选择:我从未想过要运行Flask-Security的视图,因为我必须设置一个自定义表单对象并在注册后进行额外的工作。当然,我还必须更改我的url_for调用。 - Nick K9

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接