2016-12-19 22 views
0

私のSailsJSとAngular 2アプリケーションでCSRFを有効にしたいのですが、私は無限の問題を抱えています。Sails JS CSRFトークンは毎回異なります

Angularアプリは、ユーザーがログインした後にのみアクセス可能なページで、Sailsポリシーによって制御されます。 次に、/csrfTokenのCSRFトークンを経路指定して格納し、POSTを実行するときにHTTPヘッダーに追加します。http.get

私は継続的にCSRFの不一致エラーを得ていたと私は最終的にブラウザからURLにアクセスする際/csrfTokenルートもhttp.getから、両方の、異なる値を毎回返していましたことに気づい

CSRV値がフォームの非表示フィールドとして送信され、表示されないマルチページアプリケーションの場合、this tutorial(00:30参照)を通過したときにこれが起こっていたことは明らかではありませんでしたSailsのドキュメントでこの動作をどのように変更するかについて言及しています。

セッションで1つのCSRF値を維持するようにセイルを設定するにはどうすればよいですか?

UPDATE:それは今アドバイスとして、私は私の更新に答えを作った

取り組んでいます。

+0

あなたの答えを編集してあなた自身の質問に回答し、承認された回答として選択してください。それは必然的に質問に答えさせるでしょう。 –

答えて

0

私の問題を引き起こしていたさまざまな問題があることが判明しました。

私のコードが断片化して、CSRFをヘッダーに間違って入れていた古い機能を参照していたことに気付かなかった。

クライアント側のコードをロールバックして魔法のように、CSRF値がAjax呼び出し間で一貫したままであり、POSTリクエストでも正しく機能しました。

私は断片化されたコードに、CSRFトークンがAPI呼び出しの間で変化する原因があったと思いますが、それは何か分かりません。

ブラウザで/csrfTokenを訪問すると、毎回異なる結果が生成されますが、API呼び出しには影響しないようです。

EDIT

私はCSRFは/csrfTokenに各要求に伴って変化することを発見しました。私の間違いの1つは、最初にCSRF値を保存した後、私は再び(偶然に)新しい/csrfTokenを後で要求し、それが格納された値を無効にしたということでした。格納された値を使用すると、新しい値が発行されたときにCSRFの不一致エラーが発生します。

関連する問題