我需要觸發回調設計重定向用戶到登錄頁面之前,可能是因爲authenticate_user!
方法檢測他沒有登錄喜歡的東西:如何檢測用戶將要被認證? (之前認證)
before_filter :authenticate_user!, :only => :edit
def not_authenticated_callback
# do something
end
它不應該,如果authenticate_user!
被稱爲一直沒有調用。
我需要觸發回調設計重定向用戶到登錄頁面之前,可能是因爲authenticate_user!
方法檢測他沒有登錄喜歡的東西:如何檢測用戶將要被認證? (之前認證)
before_filter :authenticate_user!, :only => :edit
def not_authenticated_callback
# do something
end
它不應該,如果authenticate_user!
被稱爲一直沒有調用。
我我們發現了一個難看的解決方案:
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
while using before_filter:authenticate_user!,動作也不會去你的控制器內,如果沒有登錄的用戶。
,如果你使用的before_filter, 你不能訪問你的控制器內的任何功能,在不登錄的用戶。
before_filter在控制器的上下文中執行。 – sheerun
我認爲它調用一個在lib/devise/controllers/helpers.rb中定義的幫助方法 這裏'authenticate#{resource_name}!'被評估爲「authenticate_user!」 –
不知道你如何檢查用戶是否被認證。你可以爲authenticate_user添加一個after_filter!你可以在哪裏檢查用戶是否已登錄。 –