2016-05-13 2 views
1

У меня есть приложение с готовым интерфейсом, и я хочу добавить функции входа/выхода/регистрации/восстановления с помощью Flask-Security. Прежде чем я работал с этим поведением по умолчанию - когда пользователь нажал «забыли пароль», он был перенаправлен на определенную конечную точку.Как визуализировать форму запроса пароля?

Теперь я хочу забыть форму пароля на той же странице (только в другой панели, которая отображается, когда пользователь нажимает соответствующую ссылку).

У меня возникла проблема с тем, что я не могу просто добавить ту же форму с той же конечной точкой, потому что Flask-Security хочет токен CSRF. Я думаю, что могу как-то отобразить его форму на странице и настроить стили. Но я не знаю как.

Я не хочу выключать csrf проверить, если я не знаю, что нет других способов.

ответ

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) 
     } 
    } 
}) 
Смежные вопросы