设计未使用的全身份验证控制器



我正在尝试使用带有Omniauth选项的Devise创建一个Rails应用程序,用于用户管理。 我正在尝试一次让一个OAuth服务工作,从Github开始。 欢迎页面加载,我单击使用 Github 登录,转到 Github 授权页面并允许,然后重定向开始,我收到错误消息The action 'github' could not be found for Devise::OmniauthCallbacksController

我不明白为什么我会收到此错误b/c,我已经在应用程序/控制器/用户/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,而不是使用我的用户/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" }

最新更新