2012-10-08 33 views
0

我需要觸發回調設計重定向用戶到登錄頁面之前,可能是因爲authenticate_user!方法檢測他沒有登錄喜歡的東西:如何檢測用戶將要被認證? (之前認證)

before_filter :authenticate_user!, :only => :edit 

def not_authenticated_callback 
    # do something 
end 

它不應該,如果authenticate_user!被稱爲一直沒有調用。

回答

0

我我們發現了一個難看的解決方案:

around_filter :intersect_warden 

def intersect_warden 
    success = false 
    result = catch(:warden) do 
    result = yield 
    success = true 
    result 
    end 

    unless success 
    not_authenticated_callback 
    throw(:warden, result) 
    end 
end 
-1

while using before_filter:authenticate_user!,動作也不會去你的控制器內,如果沒有登錄的用戶。

,如果你使用的before_filter, 你不能訪問你的控制器內的任何功能,在不登錄的用戶。

+0

before_filter在控制器的上下文中執行。 – sheerun

+0

我認爲它調用一個在lib/devise/controllers/helpers.rb中定義的幫助方法 這裏'authenticate#{resource_name}!'被評估爲「authenticate_user!」 –

+0

不知道你如何檢查用戶是否被認證。你可以爲authenticate_user添加一個after_filter!你可以在哪裏檢查用戶是否已登錄。 –