Ruby on rails 3 重写会话控制器未登录
我想在我的网站中添加OpenID身份验证。为了做到这一点,我遵循了几个教程,使用了几个插件和gem,最后我设法用gem做了一些事情。我也有普通的登录/密码认证、Facebook认证和Twitter认证。这三个工作得很好 现在我正试图覆盖Desive的会话控制器,但当我这样做时,正常的登录/密码就停止工作了。我得到的错误是:Ruby on rails 3 重写会话控制器未登录,ruby-on-rails-3,devise,controller,Ruby On Rails 3,Devise,Controller,我想在我的网站中添加OpenID身份验证。为了做到这一点,我遵循了几个教程,使用了几个插件和gem,最后我设法用gem做了一些事情。我也有普通的登录/密码认证、Facebook认证和Twitter认证。这三个工作得很好 现在我正试图覆盖Desive的会话控制器,但当我这样做时,正常的登录/密码就停止工作了。我得到的错误是: ActiveRecord::RecordNotFound in Sessions#create Couldn't find User without an ID
ActiveRecord::RecordNotFound in Sessions#create
Couldn't find User without an ID
其余的身份验证表单工作正常,甚至注册工作也很完美。这只是登录/密码验证方法
我使用Rails 3.0.1、Ruby 1.8.9和Desive 1.4.9
routes.rb
MAWeb::Application.routes.draw do
[...]
devise_for :admins
devise_for :users, :controllers => {:registrations => 'registrations', :sessions => 'sessions'}
match '/users/openid' => 'users#openid_sign_in'
match 'openid/sign_in' => 'openid#sign_in', :as => :openid_sign_in
get 'openid/create'
match '/auth/:provider/callback' => 'authentications#create'
match '/auth/failure' => 'authentications#failure'
resources :subscription_contact_datas
resources :subscription_preferences do
collection do
post :create_with_params
end
member do
get 'delete_tag'
end
get 'fill_event_id', :on => :member
end
resources :event_states
resources :subscription_profiles do
collection do
put :update_profiles
end
end
resources :event_criteria_options
resources :subscriptions do
collection do
get :options_for_event_criteria
end
end
resources :event_criterias
resources :categories
resources :user_infos do
member do
get 'edit'
end
end
resources :events
resources :users do
member do
get 'showUserActivity'
end
end
resources :admins
resources :subscriptions_from_poi
root :to => "home#index"
namespace :user do
root :to => "users#index"
end
namespace :admin do
root :to => "admins#index"
end
*注册控制器的覆盖工作得很好
编辑:添加了大部分路线。在我看来,我省略的那些并不重要。请展示您完整的
config/routes.rb
designe+Omniauth是完美的组合。我们已经为所有主要的openid提供商使用了它们。我在Twitter和Facebook上使用了Desive和Omniauth,但我不可能适应openid身份验证。。。