私はRailsアプリケーション(バージョン4.2.5)で、インターネットに接続できないときにユーザーが記入できるフォームをキャッシュするためにラックオフラインの宝石を使用しています後でユーザが接続しているときに提出できるlocalStorageオブジェクトとして格納されます)。それはレンダリング - フォームが送信されたときしかし、私はRailsのサーバの電源がオフの間、新しいブラウザウィンドウを開き、ページがキャッシュされている(http://localhost:3000/entries/newに移動したときにこれが発生するエラーRails - キャッシュされたフォームの無効な認証トークンエラー
ActionController::InvalidAuthenticityToken in EntriesController#create
を取得していますちょうど良い)、フォームを記入してから、サーバーを再度オンにして提出してください。
def create
@entry = Entry.create(entry_params)
redirect_to "http://localhost:3000/entries"
end
とアプリケーション・コントローラ:私のエントリーコントローラから
class ApplicationController < ActionController::Base
protect_from_forgery with: :exception
end
そして、私のレイアウトでビューが<%= csrf_meta_tags %>
を含んで、私はこの問題を回避することができます任意の方法があります。アプリのセキュリティを損なうことなく問題を解決できますか?アプリケーションコントローラで
EDIT、Iは
protect_from_forgery with: :null_session
と
protect_from_forgery with: :exception
を交換し、これが問題を解決しました。しかし、これがセキュリティ上の脆弱性を引き起こすかどうかを理解するためには、これが何を意味するのか十分に分かりません。それは? (PS - 本当にセキュリティ上の脆弱性を避けたい)
ありがとう - 私はこれを試しましたが、それは私にエラー 'ActionController :: InvalidAuthenticityToken'を与えました。私は誰かが他の場所で推薦しているのを見た、<%= hidden_field_tag "authenticity_token"、form_authenticity_token%>を試みました - 同じ結果。私は何を見落としているでしょうか? – skwidbreth
私はこれが間違っているのを見たところで私が考えることができる他のすべてについてちょうど追加しました。 –
ありがとうございます - 私はこれで作業し、私が思いつくことができるものを見ていきます。 – skwidbreth