2017-05-29 108 views
0

我有一個Angular應用程序,我打算使用Phoenix作爲後端。當CSRF令牌存儲到會話中時,Phoenix默認支持CSRF保護。這在Phoenix呈現視圖時正常工作,但當我的前端使用Angular js構建時,如何訪問CSRF標記。目前,我正在get_csrf_token()的get請求,但我正在尋找更好的解決方案。Phoenix和CSRF的CSRF保護

csrf_token = get_csrf_token()

注意:您可以表明,支持CSRF保護過任何其他靈藥框架。

回答

3

您可以在meta標籤與csrf_meta_tag/0存儲CSRF令牌在你的應用程序佈局,然後從角度看它,並把它設置爲默認的標題爲$httpProvider

angular.module('MyApplication', []).config(["$httpProvider", function ($httpProvider) { 
    var token = document.querySelector('meta[name=csrf-token]').content; 
    $httpProvider.defaults.headers.common['X-CSRF-Token'] = token; 
}]) 
+0

因爲我服務過角的觀點,我鳳凰城沒有佈局。那麼我應該在哪裏調用csrf_meta_tag? 注意:我在mix phoenix.new中使用--no-html標籤安裝項目。 –

+0

那麼取決於您,然後找出與服務器通信以接收csrf令牌的方式,例如使用單獨的REST端點獲取一個csrf_token。也看到這個問題的人有一個非常類似的問題 :https://stackoverflow.com/questions/33179747/springs-csrf-protection-for-a-html-only-login-page –