2012-06-13 99 views
0

我知道有一個關於它的wiki頁面,但由於我對Rails很陌生,因此在理解該頁面時遇到了很多困難。在用戶登錄失敗後設計重定向

我不得不爲我的用戶重寫註冊控制器。當用戶登錄失敗時,我想讓他重定向到我的自定義登錄頁面。但是應用程序會將他發送到gem中的登錄頁面。

我該如何做到這一點? 我應該在哪裏上這門課,我該如何改變它? 我有多個模型,他們每個人都有不同的登錄頁面。 如何爲每個模型設置範圍?

class CustomFailure < Devise::FailureApp 

    def redirect_url 

    #return super unless [:worker, :employer, :user].include?(scope) #make it specific to a scope 
    new_user_session_url(:subdomain => 'secure') 
    end 

# You need to override respond to eliminate recall 
def respond 
    if http_auth? 
    http_auth 
    else 
    redirect 
    end 
end 

設計是一個功能強大的寶石,但一些維基頁面不認爲可以有很多新的程序員

+1

[你有什麼嘗試?](http://whathaveyoutried.com) – sczizzo

+0

看看這個[post] [1]。 它可能會幫助你。 [1]:http://stackoverflow.com/questions/5832631/devise-redirect-after-login-fail –

+0

好吧,這是我的嘗試: 我已經在路線的每一項我的模型new_「模型」_session_path維基建議,但我在這裏有問題的同樣問題。失敗的登錄不會重定向到我的視圖,但要設計一個 – Barbared

回答

1

我有我的身份驗證失敗過程類/lib直接。

下面是一個簡單的版本,展示瞭如何爲用戶處理不同的範圍。

class MyAuthFailure < Devise::FailureApp 

    # add different cases here for diff scopes. 
    def redirect_url 
    if warden_options[:scope] == :user 
     root_path 
    elsif warden_options[:scope] == :admin 
     admin_root_path 
    end 
    end 

    # You need to override respond to eliminate recall 
    def respond 
    if http_auth? 
     http_auth 
    else 
     redirect 
    end 
    end 
end 

你就會把這個類/lib/my_auth_failure.rb

+0

沒有。它不適合我。我喜歡你說的。我也需要註冊管理員。 'ELSIF warden_options [:範圍] ==:管理員 new_admin_session_path end' 從我的路線: 'new_admin_session GET#new'但它一直重定向到/登入代替/admin(.:format)管理/會話/ admin – Barbared

+0

解決!這是一個路由thx問題 – Barbared

+0

很高興我可以幫助! –