我有使用现成UI的应用程序,我想用Flask-Security
添加登录/注销/注册/恢复功能。在我使用该默认行为之前 - 当用户点击“忘记密码”时,他被重定向到特定端点。
现在我想在同一页面上忘记密码表格(只是在用户点击相应链接时显示的不同面板中)。
我遇到了一个问题,即我不能只使用相同的端点添加相同的表单,因为Flask-Security
需要CSRF令牌。我认为我可以以某种方式在页面上呈现其形式并调整样式。但我不知道如何。
除非我确实知道没有其他办法,否则我不想关闭csrf
支票。
答案 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)
}
}
})