[解決済み】Rails 4 認証トークン
質問
新しいRails 4アプリ(Ruby 2.0.0-p0上)で作業しているときに、認証トークンに関する問題に遭遇しました。
jsonに応答するコントローラを書いているときに (
respond_to
クラスメソッド)にたどり着きました。
create
アクションを取得するようになりました。
ActionController::InvalidAuthenticityToken
を使用してレコードを作成しようとすると、例外が発生します。
curl
.
を設定したことを確認しました。
-H "Content-Type: application/json"
でデータを設定し
-d "<my data here>"
が、まだうまくいきません。
Rails 3.2 (on Ruby 1.9.3) で同じコントローラを書いてみましたが、認証トークンの問題は全く発生しませんでした。いろいろ検索してみたところ、Rails 4では認証トークンについていくつか変更があったようです。私が理解したところでは、フォームに自動的に挿入されなくなったのでしょうか?私はこれが非HTMLコンテンツタイプに何らかの影響を与えていると思います。
HTML フォームをリクエストして認証トークンを取得し、そのトークンを使って再度リクエストすることなく、これを回避する方法はないでしょうか。あるいは、私は、完全に明白な何かを見逃しているのでしょうか?
編集する 何も変更せずにscaffoldを使用して新しいRails 4アプリで新しいレコードを作成してみたところ、同じ問題が発生したので、私が何かしたわけではないのでしょう。
解決方法は?
今、わかったような気がします。私は(新しい)デフォルトを変更しました
protect_from_forgery with: :exception
になります。
protect_from_forgery with: :null_session
のコメントのように
ApplicationController
.
# Prevent CSRF attacks by raising an exception.
# For APIs, you may want to use :null_session instead.
のソースを見れば、その違いがわかると思います。
request_forgery_protecton.rb
であり、具体的には以下の行である。
で Rails 3.2 :
# This is the method that defines the application behavior when a request is found to be unverified.
# By default, \Rails resets the session when it finds an unverified request.
def handle_unverified_request
reset_session
end
で Rails 4 :
def handle_unverified_request
forgery_protection_strategy.new(self).handle_unverified_request
end
を呼び出します。 次の :
def handle_unverified_request
raise ActionController::InvalidAuthenticityToken
end
関連
-
[解決済み】コントローラでJSONをレンダリングする
-
[解決済み] どのようにrailsでラジオボタンを正しく使用するには?
-
[解決済み] Ruby on Railsのためにnetbeansを構成する方法は?
-
[解決済み] nil:NilClass の未定義メソッド `each'... なぜ?
-
[解決済み] 構文エラー "構文エラー、予期しない入力終了、keyword_endを期待 (SyntaxError)"
-
[解決済み] Ruby on Railsのマイグレーションでデータベースのカラムの名前を変更するにはどうすればよいですか?
-
[解決済み] Ruby on Railsで現在の絶対URLを取得するにはどうすればよいですか?
-
[解決済み] Rails 4で懸念事項を使用する方法
-
[解決済み] Rails 4: 利用可能なデータ型のリスト
-
[解決済み】Railsの認証トークンを理解する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】ActionController::InvalidAuthenticityTokenについて
-
[解決済み] サーバーに接続できませんでした。そのようなファイルまたはディレクトリがありません (PG::ConnectionBad)
-
[解決済み】PG::ConnectionBad: fe_sendauth: パスワードが供給されない
-
[解決済み] 変更欄のRailsマイグレーション
-
[解決済み] Rubyで変数をインクリメントする [重複]。
-
[解決済み] PG::ConnectionBad - サーバーに接続できませんでした。接続が拒否されました。
-
[解決済み] Railsです。gemを使った特定バージョンのライブラリのアンインストール
-
[解決済み] RVMでRubyのデフォルトバージョンを設定するには?
-
[解決済み] Railsはsaveでモデル内の検証をスキップしますか?
-
[解決済み] 未初期化の定数 "コントローラ名"