设计 OmniauthsController 未被使用
Devise OmniauthsController not being used
我正在尝试使用 Devise 和 Omniauth 选项创建一个 Rails 应用程序以进行用户管理。我试图让一个 OAuth 服务同时工作,从 Github 开始。欢迎页面加载,我单击使用 Github 登录,转到 Github 授权页面并允许,然后重定向开始,我收到错误消息 The action 'github' could not be found for Devise::OmniauthCallbacksController
.
我不明白为什么会出现这个错误b/c我已经在 app/controllers/users/omniauth_callbacks_controller.rb 中定义了如下操作:
class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
def github
@user = User.from_omniauth(request.env["omniauth.auth"])
sign_in_and_redirect @user
end
end
app/models/user.rb
class User < ApplicationRecord
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable, :omniauthable, :confirmable, :lockable, :omniauth_providers => [:github]
end
和app/config/routes.rb
Rails.application.routes.draw do
get 'welcome/index'
root 'welcome#index'
devise_for :users, :controller => { :omniauth => "users/omniauth_callbacks" }
end
它试图回退到默认的 Devise OmniauthsCallbacksController 而不是使用我的 users/omniauths_callbacks_controller.rb,但我不知道为什么。有什么建议吗?
可能相关的信息:
ruby v 2.4.0
rails v 50.0.1
omniauth v 1.3.2
devise v 4.2.0
omniauth-github v 1.1.2
尝试替换
devise_for :users, :controller => { :omniauth => "users/omniauth_callbacks" }
至
devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" }
我正在尝试使用 Devise 和 Omniauth 选项创建一个 Rails 应用程序以进行用户管理。我试图让一个 OAuth 服务同时工作,从 Github 开始。欢迎页面加载,我单击使用 Github 登录,转到 Github 授权页面并允许,然后重定向开始,我收到错误消息 The action 'github' could not be found for Devise::OmniauthCallbacksController
.
我不明白为什么会出现这个错误b/c我已经在 app/controllers/users/omniauth_callbacks_controller.rb 中定义了如下操作:
class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
def github
@user = User.from_omniauth(request.env["omniauth.auth"])
sign_in_and_redirect @user
end
end
app/models/user.rb
class User < ApplicationRecord
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable, :omniauthable, :confirmable, :lockable, :omniauth_providers => [:github]
end
和app/config/routes.rb
Rails.application.routes.draw do
get 'welcome/index'
root 'welcome#index'
devise_for :users, :controller => { :omniauth => "users/omniauth_callbacks" }
end
它试图回退到默认的 Devise OmniauthsCallbacksController 而不是使用我的 users/omniauths_callbacks_controller.rb,但我不知道为什么。有什么建议吗?
可能相关的信息:
ruby v 2.4.0
rails v 50.0.1
omniauth v 1.3.2
devise v 4.2.0
omniauth-github v 1.1.2
尝试替换
devise_for :users, :controller => { :omniauth => "users/omniauth_callbacks" }
至
devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" }