2012-03-22 37 views
0

使用devise-2.0.4.gem和devise_ldap_authenticatable-0.4.4.gem運行Rails 3.2.1。Rails設計時不保留https登錄/註銷

一切工作正常與HTTP。但是,當部署到使用HTTPS的生產時,在用戶登錄後,瀏覽器切換到HTTP會導致錯誤,因爲生產URL僅支持HTTPS。如果我在網址中手動添加「s」,那麼我可以使用rails應用程序。應用程序本身在維護HTTPS協議時沒有問題。

與註銷類似,即使註銷鏈接是HTTPS,單擊該鏈接將轉到HTTP並失敗。

由於應用程序可以使用HTTPS進行導航,因此看起來它的設計難以保持HTTPS協議。任何想法?在這一點上,我甚至不介意硬編碼生產HTTPS。

回答

1

您是否閱讀過有關SSL的Devise Wiki頁面?我認爲這可能會解決您的問題:How To: Use SSL (HTTPS)。在那裏解釋所有使用HTTPS的步驟。

如果這沒有幫助,你應該在這裏發佈你的設計授權碼。

+0

謝謝你的指針。我添加到我的env.rb中: – 2012-03-23 17:45:05

+0

現在,我可以看到Devise正在重定向到https,這很好。但我在登錄時出現此錯誤: ==已啓動GET「/ users/sign_in」for 1.2.3.4 at 2012-03-23 10:29:08 -0700 == Processing by Devise :: SessionsController#new as HTML ==重定向到https://MyCompany.com/users/sign_in ==過濾器鏈被暫停爲#呈現或重定向 ==已完成301在2ms內永久移動(ActiveRecord:0.0ms) ==緩存:[GET/users/sign_in] miss – 2012-03-23 18:06:52

+0

could you添加錯誤輸出併爲您的問題設計特定的代碼?你可以在那裏格式化輸出,這比在評論中更可讀。另外:你正在使用哪個設計版本?可能最新的設計版本和ldap-gem不會很好地相處? – 2012-03-26 17:24:09

1

我在application_controller.rb解決我的問題通過設置after_sign_in_path_for和after_sign_out_path_for:

# Tell Devise to redirect after sign_in 
def after_sign_in_path_for(resource_or_scope) 
    'https://www.xyz.com/' 
end 

# Tell Devise to redirect after sign_out 
def after_sign_out_path_for(resource_or_scope) 
    'https://www.xyz.com/' 
end