0

適切なプロトコル (一部のページでは https、他のページでは http) を確保するために最近追加したコードが原因で、セッションなどが台無しになっていると思います。よくわかりませんが。Filter chain halted as :ensure_proper_protocol rendered or redirectedしかし、私は自分のログで見続けています。

`:ensure_proper_protocol メソッドは、アプリケーション コントローラーにあるメソッドを参照しています。

    class ApplicationController < ActionController::Base

      CONTROLLERS_THAT_REQUIRE_SSL = ['check_out', 'users', 'sessions', 'registrations', 'addresses', 'catalog_requests', 'wine_club/orders']

      def ensure_proper_protocol
        unless Rails.env.development? || Rails.env.test?
          if request.format == "text/html" && request.protocol["https"] && !CONTROLLERS_THAT_REQUIRE_SSL.include?(params[:controller])
            redirect_to "http://" + request.host + request.path
          end
        end
      end

CONTROLLERS_THAT_REQUIRE_SSL のコントローラーについては、次のforce_sslように追加します。

class CheckOutController < ApplicationController

   force_ssl
   ...

ただし、プロトコルの切り替えがセッションを台無しにしているかどうか疑問に思っています。セッションの問題とこのエラーは関連していますか? 「フィルターチェーンが停止しました」エラーを修正するにはどうすればよいですか?

私が抱えているセッションの問題は、Devise と認証に関するものです。:authenticate_user! の前にフィルタがあります。なんとかログインできましたが、ログインしたままではないようです。問題は、エラーメッセージがないことです。なんらかの理由でログアウトするだけで、リダイレクトが原因であると確信しています。これは、ユーザーがサインインしているかどうかを確認するためにアプリケーションコントローラーに before フィルターがあり、devise ヘルパーメソッドuser_signed_in?を使用して、ユーザーはサインインしています。私のログを見てください:

    Cache read: https://mysite-rc-preview.mysite.com/users/sign_in?
    Started POST "/users/sign_in" for 69.193.194.58 at 2013-09-04 12:09:38 -0400
    Processing by SessionsController#create as HTML
      Parameters: {"utf8"=>"✓", "authenticity_token"=>"bSYhk5t7VPBUTGkQuVyix8cb7Et7yojPE5m0V/g+do8=", "user"=>{"email"=>"emai@mysite.com", "password"=>"[FILTERED]"}, "commit"=>"Log in"}
    inside setup_cart. current_cart_id is 55005260
    55005260
    request.session_options[:id] = eecb979b4d7db5bfd28a3684ef7288d3
      User Load (2.9ms)  SELECT "users".* FROM "users" WHERE "users"."email" = 'emai@mysite.com' LIMIT 1
       (1.9ms)  BEGIN
       (2.2ms)  UPDATE "users" SET "last_sign_in_at" = '2013-09-04 16:07:44.987529', "current_sign_in_at" = '2013-09-04 16:09:39.171144', "sign_in_count" = 34, "updated_at" = '2013-09-04 16:09:39.174358' WHERE "users"."id" = 350492
       (10.6ms)  COMMIT
    begining get_or_create_cart session[:current_cart_id] is 55005260
      Cart Load (2.3ms)  SELECT "carts".* FROM "carts" WHERE "carts"."user_id" = 350492 AND "carts"."id" = 55005260 LIMIT 1
      Cart Load (2.2ms)  SELECT "carts".* FROM "carts" WHERE "carts"."user_id" = 350492
    end of get_or_create_cart session[:current_cart_id] is 54993421
      SeoContent Load (2.2ms)  SELECT "seo_contents".* FROM "seo_contents" WHERE "seo_contents"."for_section" = 'default' LIMIT 1
    There's no session[:cvv] variable
      Cart Load (2.2ms)  SELECT "carts".* FROM "carts" WHERE "carts"."web_cart_session" = 'eecb979b4d7db5bfd28a3684ef7288d3'
      Cart Load (2.4ms)  SELECT "carts".* FROM "carts" WHERE "carts"."user_id" = 350492 AND "carts"."name" = 'My Cart' LIMIT 1
      CartItem Load (2.2ms)  SELECT "cart_items".* FROM "cart_items" WHERE "cart_items"."cart_id" = 55005260 ORDER BY created_at
       (1.9ms)  BEGIN
      SQL (2.4ms)  DELETE FROM "carts" WHERE "carts"."id" = $1  [["id", 55005260]]
       (6.5ms)  COMMIT
    Redirected to https://mysite-rc-preview.mysite.com/
    Completed 302 Found in 408ms (ActiveRecord: 42.0ms)
    Cache read: https://mysite-rc-preview.mysite.com/?
    Started GET "/" for 69.193.194.58 at 2013-09-04 12:09:39 -0400
    Processing by SiteController#index as HTML
    Redirected to http://mysite-rc-preview.mysite.com/
    Filter chain halted as :ensure_proper_protocol rendered or redirected
    Completed 302 Found in 1ms (ActiveRecord: 0.0ms)
    Cache read: http://mysite-rc-preview.mysite.com/?
    Started GET "/" for 69.193.194.58 at 2013-09-04 12:09:39 -0400
    Processing by SiteController#index as HTML
    inside setup_cart. current_cart_id is 54993421
    54993421
    request.session_options[:id] = 4bec2bbc42e8213be89aaf6431b41535
    inside not user_signed_in? clause of setup_cart

ログイン後にホームページにリダイレクトされますが、これは問題ありませんが、その後 http:// ... / から https:// ... / にリダイレクトされるため、ユーザーはサインインできなくなります。これは、設定したとおりにセッションがデータベースに保存されていないためでしょうか? config/initializers/session_store.rb に次の行があります。

mysite::Application.config.session_store :active_record_store

4

0 に答える 0