2012-04-19 71 views
3

我有類用戶:: OmniauthCallbacksController <設計:: OmniauthCallbacksController ,我重寫after_omniauth_failure_path_for方法:無法覆蓋after_omniauth_failure_path_for在設計

protected 
    def after_omniauth_failure_path_for resource 
    '/report_failure' 
    end 

但超級之一是,被稱爲之一。

我懷疑,這是因爲中繼解決方法:

devise_for :users do 
    get '/users/auth/:provider' => 'users/omniauth_callbacks#passthru' 
    end 

有誰知道如何解決這個問題? 我使用的設計2.0.4

這是日誌文件報告:

Started GET "https://stackoverflow.com/users/auth/facebook/callback?error_reason=user_denied&error=access_denied&error_description=The+user+denied+your+request." for 77.124.184.115 at 2012-04-19 11:34:46 +0000 
Processing by Devise::OmniauthCallbacksController#failure as HTML 
    Parameters: {"error_reason"=>"user_denied", "error"=>"access_denied", "error_description"=>"The user denied your request."} 
Redirected to http://myapp.com/users/sign_in 
Completed 302 Found in 1ms (ActiveRecord: 0.0ms) 

編輯:如果我刪除了中繼重定向,那麼它的工作原理:

#  def devise_for :users do 
#  get '/users/auth/:provider' => 'users/omniauth_callbacks#passthru' 
#  end 

謝謝

+0

你的錯誤信息告訴你Devise甚至不使用你的'OmniauthCallbacksController',它使用它自己的。我認爲@ the8472是對的。你發佈的代碼不會顯示你設置':omniauth_callbacks =>「users/omniauth_callbacks」' – declan 2012-04-29 18:08:31

回答

0

您忘記將:controllers => { :omniauth_callbacks => "users/omniauth_callbacks" } 參數添加到devise_for路由配置,沒有它omniauth不知道哪個控制呃在失敗後重定向到。

順便說一句,passthru不是設計的一部分。你可能自己添加了它?

+0

我在我的routes.rb中有這個重定向,是的,我已經根據我見過的很多帖子添加passthru – kambi 2012-04-29 07:50:33

+1

我我也試過了,但它不起作用,好像你不能像這樣覆蓋omniauth_callbacks類。 – 2012-06-13 13:49:54