因此,我一直在开发一个相当简单的 rails 4 应用程序,并且已经到了需要添加用户身份验证的地步。特别是,我想通过设计和omniauth的组合使用谷歌应用程序(只有谷歌应用程序)身份验证。现在,devise 有一个教程,据说可以告诉你如何设置类似的东西。在安装设计并在教程中进行建议的更改后,一切看起来都很棒。我点击了我的登录链接,并被正确发送到谷歌进行身份验证。但是,在我提供凭据后,我立即收到路由错误:
uninitialized constant Users
这令人困惑。据我了解,这意味着控制器丢失了......但我肯定有users_controller.rb
,它应该在哪里。除此之外,我没有任何线索。
这是我route.rb
的参考:
resources :instances, :users
devise_for :users, :controllers => { :omniauth_callbacks => 'users/omniauth_callbacks' }
# authentication routes
devise_scope :user do
get 'sign_in', :to => 'devise/sessions#new', :as => :new_user_session
get 'sign_out', :to => 'devise/sessions#destroy', :as => :destroy_user_session
end
root to: 'instances#index'
这是结果rake routes
:
Prefix Verb URI Pattern Controller#Action
instances GET /instances(.:format) instances#index
POST /instances(.:format) instances#create
new_instance GET /instances/new(.:format) instances#new
edit_instance GET /instances/:id/edit(.:format) instances#edit
instance GET /instances/:id(.:format) instances#show
PATCH /instances/:id(.:format) instances#update
PUT /instances/:id(.:format) instances#update
DELETE /instances/:id(.:format) instances#destroy
users GET /users(.:format) users#index
POST /users(.:format) users#create
new_user GET /users/new(.:format) users#new
edit_user GET /users/:id/edit(.:format) users#edit
user GET /users/:id(.:format) users#show
PATCH /users/:id(.:format) users#update
PUT /users/:id(.:format) users#update
DELETE /users/:id(.:format) users#destroy
user_omniauth_authorize GET|POST /users/auth/:provider(.:format) users/omniauth_callbacks#passthru {:provider=>/google_apps/}
user_omniauth_callback GET|POST /users/auth/:action/callback(.:format) users/omniauth_callbacks#(?-mix:google_apps)
new_user_session GET /sign_in(.:format) devise/sessions#new
destroy_user_session GET /sign_out(.:format) devise/sessions#destroy
root GET / instances#index
另外值得注意的是,我正在运行 rails 4 并设计 3.0.0.rc(因为它与 rails 4 兼容)
让我知道您是否还需要其他任何东西,但几乎所有其他相关的内容都在教程中。