2016-05-13 31 views
1

我已準備好用戶界面的應用程序,我想用Flask-Security添加登錄/註銷/註冊/恢復功能。在我使用該默認行爲之前 - 當用戶單擊「忘記密碼」時,他被重定向到特定的端點。如何渲染Flask-Security忘記密碼錶單?

現在我想在同一頁面上忘記密碼錶單(只是在用戶點擊相應鏈接時顯示的不同面板中)。

我遇到了一個問題,我不能只用相同的端點添加相同的表單,因爲Flask-Security需要CSRF標記。我認爲我可以以某種方式在頁面上呈現其形式並調整樣式。但是我不知道怎麼做。

我不想關閉csrf檢查,除非我肯定知道,有沒有其他的方法。

回答

1

因爲您生成表單動態,我會假設你正在使用AJAX,該documentation談它。

您必須啓用與

from flask_wtf.csrf import CsrfProtect 

CsrfProtect(app) 

的CSRF模塊中,你將有機會獲得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) 
     } 
    } 
})