我想將我的應用程序發佈到一組選定的個人以進行私人測試。我爲此任務創建了一個子域:beta.company.com。Rails 3子域
應用程序按預期在我的工作站上運行,但是當我將它推送到服務器時,應用程序會不斷地路由回到驗證頁面。僅供參考,我使用的是聲明式授權,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)如預期的匿名工作。用戶
- 的應用程序運行如預期我的工作站
。當我看着production.log,我看到這樣一個條目:通過UsersController#指數HTML 權限
加工否認: #@role_symbols = [:guest]>(roles [:guest],privileges [:index,:read,:manage],context:users)的索引找不到匹配的規則。 重定向到http://beta.company.com/authenticate
**編輯**
其一,沒有一個UsersController#index動作,如果有,匿名用戶將無法訪問它。我很困惑它爲什麼試圖路由那裏(而不是根url,這是成功的身份驗證後應該去的地方)。
這看起來像是一個子域特定的路由問題,但我無法確定。
更仔細地重讀這個'錯誤'。有一個UserController#索引操作,匿名用戶不應該有權訪問它。乍一看,我認爲它讀取UserSessionController#index,這是不存在的操作。
現在,似乎認證的用戶沒有被創建或保存,因此正被重新路由回UserSession#new action(AKA認證路徑)。
**/**編輯
**編輯** II
我從cookie_store改爲active_record_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 **
想法是非常感激。
我想我沒有仔細閱讀日誌 - 編輯帖子。如何在Beta版域上設置Cookie(必須與我現在所做的不同)?成功的身份驗證會路由到「root_url」。您建議改爲路由到users_path,對嗎? – craig 2011-02-09 14:54:21