0

我目前正在處理422錯誤(一個無效的身份驗證令牌傳遞給rails),我當前將用戶重定向到一個單獨的頁面。這很好,但我發現,如果用戶登錄並在登錄請求期間遇到422錯誤,用戶將轉到單獨的頁面並且現在登錄。理想情況下,我希望用戶不會登錄登錄時處理422錯誤

我目前用戶Devise(3.4.1)進行身份驗證。在下面編寫的代碼之外沒有編寫自定義代碼。

我該如何阻止用戶登錄時遇到422錯誤而未登錄?

class ApplicationController < ActionController::Base 
    protect_from_forgery with: :exception 

    # This method is called whenever a CSRF token is invalid. 
    def handle_unverified_request 
    # By default this method raises ActionController::InvalidAuthenticityToken 
    redirect_to '/422' 
    end 
end 
+0

Rails不具有認證的內置功能。請提供更多關於您如何處理此信息的信息,無論是寶石還是自定義實現。 – coreyward

+0

更新了我的答案。順便說一句我用Devise進行身份驗證。 – jason328

回答

0

試試這個

def handle_unverified_request 
    super # call the default behaviour, including Devise override 
    authenticate_user! 
end 
+0

當我意識到Devise重寫該方法時,我玩過這個遊戲。問題是我收到以下錯誤'ActionController :: InvalidAuthenticityToken',這是從調用'super'時發生的。 – jason328