2017-08-10 95 views
0

我正在運行設計。除了特定路線之外,我希望所有內容都可以強制登錄。在我的應用程序中,我保存了一個很長的URL並使用一個簡短的URL指向我的應用程序以獲取重定向的長URL。未登錄的外部用戶需要能夠追蹤該短網址並獲取外部重定向的長網址。例如localhost.com/WdeFrs從數據庫中拉長鏈接並重定向到以.... google.com爲例。一切正常,除非你按照鏈接返回它強制登錄。 它需要工作,無需登錄有人可以幫助澄清修復。謝謝設計before_action:驗證異常

application_controller.rb

before_action :authenticate_user!, :except => [:urls] 

的routes.rb

resources :urls 
    get "/:short_url", to: "urls#shortcustom" 
    get "shortened/:short_url", to: "urls#shortened", as: :shortened 
+0

您不希望登錄用戶使用哪種方法? – Vishal

+0

得到「/:short_url」,以:「urls#shortcustom」我想是我想要例外。 – Jrinard

+0

請在您的網址控制器中嘗試此「skip_before_filter:authenticate_user !,:only =>:shortcustom」。 – Vishal

回答

1

before_action選項except期望一個動作名稱,而不是一個控制器名稱。原因是,您的代碼正在跳過名爲urls的任何操作的身份驗證。

要跳過身份驗證urls#shortcustomurls#shortened,你需要包括

skip_before_action :authenticate_user!, :only => [:shortcustom, :shortened] 

UrlsController

+0

我確實嘗試過,並且出現錯誤:在skip_callback中:在process_action回調之前:authenticate_user!尚未定義(ArgumentError)我現在正在尋找修復此錯誤的方法。 :) – Jrinard

+0

@Jrinard如錯誤所述,在控制器的範圍內沒有定義'authenticate_user!'。你確定它是在'ApplicationController'中定義的,並且'UrlsController'繼承了它嗎? – vijoc

+0

是的,謝謝你我沒有before_action:authenticate_user!在我的application_controller! 感謝您的幫助! – Jrinard