プライベートベータ版の選択された個人に私のアプリケーションを公開したいと思います。私はこの仕事のためのサブドメインを作成しました:beta.company.com。Rails 3 subdomain
私のワークステーションではアプリケーションが正常に動作しますが、サーバーにプッシュするとアプリケーションは認証ページに戻ります。参考までに、私は宣言認可、authlogic、Passengerを使用しています。
routes.rbを:
#Application controller
match "/not_authorized", :to => "application#not_authorized", :as => :not_authorized
#UserSessions controller
match "/quit", :to => "user_sessions#destroy", :as => :quit
match "/authenticate", :to => "user_sessions#new", :as => :authenticate
resources :user_sessions, :only => :create
#Users controller
match "/enroll", :to => "users#new", :as => :enroll
# root url
root :to => "users#index"
症状:
- 匿名経路(例えばuser_sessions#がnot_authorized作成)アノンため予想通り働きます。拒否されたHTML パーミッションようがUserControllerの#インデックスによって
処理:私のワークステーション
で期待どおりユーザー
**編集**
にリダイレクト は、がUserController#インデックスアクションはありません、とあった場合、匿名ユーザーはそれにアクセスすることができません。私はなぜそれが(成功した認証の後に行くべきであるルートurlの代わりに)そこにルーティングしようとしているのか混乱しています。
これはサブドメイン固有のルーティングの問題のようですが、わかりません。
この「エラー」をもっと詳しく読んでください。 UserController#indexアクションがあり、匿名ユーザーはアクセスできません。一見すると、存在しないアクションであるUserSessionController#indexを読み込んだと思った。
認証されたユーザーが作成または保存されていないため、UserSession#new action(AKA authenticate path)に再ルーティングされているようです。
** /編集**
**編集II **
私はactive_record_storeするcookie_storeから変更:
# cookie store
# MyApp::Application.config.session_store :cookie_store, :key => '_myApp_session'
# active-record store
MyApp::Application.config.session_store :active_record_store
は、テーブルを追加しました($すくいデシベル:セッション:作成) ($ rake db:migrate)、Apache($ touch tmp/restart.txt)を再起動し、ブラウザのキャッシュをクリアしてブラウザを再起動しました。
セッションはセッションテーブルに正常に追加されましたが、まだ問題が発生します。
** /編集II **
非常に感謝しています。1については
手始めに
私は密接に十分なログを読んでいないと思いますかを判断することができれば - ポストを編集しました。ベータドメインにCookieを設定するにはどうすればよいですか(私が今行っていることとは異なる必要があります)認証が成功すると、 'root_url'にルーティングされます。代わりにusers_pathにルーティングすることをお勧めしますか? – craig
は、session_store.rbをMyApp :: Application.config.session_store:cookie_store、:key => '_MyApp_session'、:domain =>:allに設定しました。変化なし。 – craig