私は 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
ここでいくつかのことを試しましたが、何もうまくいきませんでした。