2016-05-13 4 views
1

私は準備ができたUIのアプリケーションを持っており、ログイン/ログアウト/登録/復元機能をFlask-Securityと追加したいと思います。私がそのデフォルトの動作をする前に、ユーザーが「パスワードを忘れました」をクリックしたとき、彼は特定のエンドポイントにリダイレクトされました。Flask-Securityのパスワードフォームを忘れた場合のレンダリング方法は?

これで、同じページ(ユーザーが対応するリンクをクリックしたときに表示される別のパネル内)にパスワードフォームを忘れてしまいました。

Flask-SecurityはCSRFトークンが必要なので、同じエンドポイントの同じフォームを追加するだけでは問題がありませんでした。私は何とかページ上にそのフォームをレンダリングし、スタイルを調整することができると思います。しかし、私は方法がわかりません。

他の方法がないことを間違いなく知っていない限り、私はcsrfのチェックをオフにしたくありません。

答えて

1

フォームを動的に生成しているので、私はあなたがAJAXを使用していると仮定します。documentationはそれについて語ります。

あなたはすべてのページにcsrf_token()にアクセスする必要がありますし、あなたがそれを得ることができる

from flask_wtf.csrf import CsrfProtect 

CsrfProtect(app) 

でCSRFモジュールを有効にする必要があります。

<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) 
     } 
    } 
}) 
関連する問題