我使用 Omniauth 作为我唯一的身份验证,:database_authentication
我的模型上没有。我想使用这个 gem 通过 Atlassian Crowd 登录:https ://github.com/robdimarco/omniauth_crowd
该 gem 使用标准的 Crowd 登录表单,这是我不想要的。我想制作一个行为相同的自定义表单,但完全代替登录页面(没有“使用 Crowd 登录”)或类似的东西,只是一个登录 Crowd 的表单。
为此,我config.omniauth
在 devise.rb 的行中添加了这个选项:
:form => Devise::SessionsController.actions(:new)
从我在网上看到的情况来看,它将使用该 Rack 端点来显示自定义表单。我已将 app/views/devise/sessions/new.html.erb 中的 html 更改为 new.html.haml,其中包含以下表单:
= simple_form_for @user, :url => user_omniauth_authorize_path(:crowd) do |f|
= f.input :username, :input_html => { :name => 'username' }
= f.input :password, :input_html => { :name => 'password' }
= f.button :submit
我希望模仿默认的 OmniAuth 表单。问题是,当我使用:form
devise.rb 中的选项访问 users/auth/crowd 时,我收到错误消息:
Could not find devise mapping for path "/users/auth/crowd".
在使用 Devise 时,有没有办法像这样为 OmniAuth 提供自定义表单?
编辑:以下是路线:
devise_for :users, :controllers => { :omniauth_callbacks => 'users/omniauth' } do
get 'login', :to => 'devise/sessions#new', :as => :new_user_session
get 'logout', :to => 'devise/sessions#destroy', :as => :destroy_user_session
end
devise_scope :user do
get '/users/auth/:provider', :to => 'users/omniauth#passthru'
match '/users/auth/failure', :to => 'users/omniauth#failure'
end
resources :users
我在这里尝试了几件事,但我尝试过的都没有奏效。