0

我想將我的應用程序發佈到一組選定的個人以進行私人測試。我爲此任務創建了一個子域: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 **

想法是非常感激。

回答

0

該問題與控制器中的SELECT語句有關。 SELECT語句中的表名稱區分大小寫,「SELECT Users。*」導致錯誤。出於某種原因,這個錯誤沒有被包含在production.log文件中。隨後的部署(不使用Capistrano)做了一些事情(我仍然不知道如何),以便將此錯誤包含在production.log文件中。

現在,如果我可以確定那是什麼東西...

0

對於初學者...

其一,沒有一個UsersController#index動作,如果有,匿名用戶將無法訪問它。我很困惑它爲什麼試圖路由那裏(而不是根url,這是成功的身份驗證後應該去的地方)。

您的根網址是UsersController#指數:

# root url 
root :to => "users#index" 

檢查以確保您設置的測試域的cookie。您可能正在重定向或設置使用完整網址的鏈接(而不僅僅是路徑,因此user_url(@user) vs user_path(@user)),這會導致您直接進入根域。

+0

我想我沒有仔細閱讀日誌 - 編輯帖子。如何在Beta版域上設置Cookie(必須與我現在所做的不同)?成功的身份驗證會路由到「root_url」。您建議改爲路由到users_path,對嗎? – craig 2011-02-09 14:54:21