如何渲染Flask-Security忘记密码表单?

时间:2016-05-13 10:25:23

标签: flask flask-security

我有使用现成UI的应用程序,我想用Flask-Security添加登录/注销/注册/恢复功能。在我使用该默认行为之前 - 当用户点击“忘记密码”时,他被重定向到特定端点。

现在我想在同一页面上忘记密码表格(只是在用户点击相应链接时显示的不同面板中)。

我遇到了一个问题,即我不能只使用相同的端点添加相同的表单,因为Flask-Security需要CSRF令牌。我认为我可以以某种方式在页面上呈现其形式并调整样式。但我不知道如何。

除非我确实知道没有其他办法,否则我不想关闭csrf支票。

1 个答案:

答案 0 :(得分:1)

由于您正在动态生成表单,我将假设您正在使用AJAX,documentation会谈到它。

您必须使用

启用CSRF模块
from flask_wtf.csrf import CsrfProtect

CsrfProtect(app)

您可以在每个页面上访问csrf_token(),并且可以通过以下方式获取:

<meta name="csrf-token" content="{{ csrf_token() }}">

var csrftoken = $('meta[name=csrf-token]').attr('content')

$.ajaxSetup({
    beforeSend: function(xhr, settings) {
        if (!/^(GET|HEAD|OPTIONS|TRACE)$/i.test(settings.type) && !this.crossDomain) {
            xhr.setRequestHeader("X-CSRFToken", csrftoken)
        }
    }
})