gpt4 book ai didi

facebook - 无法覆盖 Devise 中的 after_omniauth_failure_path_for

转载 作者:行者123 更新时间:2023-12-02 09:11:02 24 4
gpt4 key购买 nike

我有我的类(class) Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController我正在重写 after_omniauth_failure_path_for 方法:

protected
def after_omniauth_failure_path_for resource
'/report_failure'
end

但是 super 的是被调用的那个。

我怀疑这是因为 passthru 解决方法:

  devise_for :users do
get '/users/auth/:provider' => 'users/omniauth_callbacks#passthru'
end

有人知道如何解决这个问题吗?我使用的是 Devise 2.0.4

这是日志文件报告:

Started GET "/users/auth/facebook/callback?error_reason=user_denied&error=access_denied&error_description=The+user+denied+your+request." for 77.124.184.115 at 2012-04-19 11:34:46 +0000
Processing by Devise::OmniauthCallbacksController#failure as HTML
Parameters: {"error_reason"=>"user_denied", "error"=>"access_denied", "error_description"=>"The user denied your request."}
Redirected to http://myapp.com/users/sign_in
Completed 302 Found in 1ms (ActiveRecord: 0.0ms)

编辑:如果我删除通路重定向,那么它就可以工作:

#       def  devise_for :users do
# get '/users/auth/:provider' => 'users/omniauth_callbacks#passthru'
# end

谢谢

最佳答案

我在 routes.rb 中正确设置了 omniauth_callbacks Controller ,但仍然无法覆盖 failureafter_omniauth_failure_path_for方法。问题是,在我有问题的用户模型之前,我有另一个带有空路径的设计用户模型设置:

devise_for :customer_users, path: ''
# [...]
devise_for :users, module: 'users' # using a module instead of controllers

这导致始终匹配 this 中的 customer_user 映射。设计omniauth方法。因此,故障由默认的 Devise::OmniauthCallbacksController 处理:

Processing by Devise::OmniauthCallbacksController#failure as HTML

可以通过为 customer_users 设置非空路径来解决此问题:

devise_for :customer_users, path: 'customer'
# or the default
devise_for :customer_users

我希望这有助于防止有人犯同样的错误。

关于facebook - 无法覆盖 Devise 中的 after_omniauth_failure_path_for,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10227380/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com