2011-12-21 6 views
6

ユーザーがomniauth-ldapを使用してActive Directoryに対して認証できるアプリケーションを構築しました。これが新しいユーザーである場合、認証が成功すると、ADから返された情報に基づいてユーザーが作成されます。ユーザーがすでに存在する場合は、ログインするだけです。ユーザーはアプリケーションに登録せず、AD資格情報でログインするだけです。私は決してユーザーがデータベースの資格情報でログインすることを望んでいません。認証にomniauthのみを使用する場合のルートを設定する

いくつかのルートを取り除く方法や変更する方法を理解できません。たとえば、ユーザーが/ sign_inを訪問すると、データベース認証が取得されます。ユーザーがsign_upを訪問すると、そのサイトに登録するページに移動します。/sign_inにアクセスするユーザーは、/ users/auth/ldapというLDAPログインに行きたいと思います。私はカスタムルートを作る必要があると思うが、私はどのコントローラをユーザに向ける必要があるか分からない。私はsign_upページを完全に消してしまいたい。

今私はユ​​ーザーがldapを使ってログインできるリンクがあり、そのパスはuser_omniauth_authorize_path(:ldap)です。私はそれを私のconfig/routes.rbファイルが理解できるものにどのように翻訳するのか分かりません。これは私が現在ルートで持っているものです。そのルートが工夫によって生成されているので

devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" } do 
     get 'sign_in', :to => 'devise/sessions#new', :as => :new_user_session 
     get 'sign_out', :to => 'devise/sessions#destroy', :as => :destroy_user_session 
    end 

私は私が推測user_omniauth_authorize_pathのための任意の経路が表示されないすくいルートを実行しています。だから私は私のルートにデベロッパーコントローラを指摘する必要があると思うが、私は正しい道を見つけることができない。

devise_for :users, :skip => [:sessions, :registrations] 

This How To may be helpfulも、here is one more link to go through

+2

ログインフォームを表示しないようにするには、devise/sessions/new.html.erbを変更する必要があります。そして、 'database_authenticatable'を削除すると、あなたのアプリケーションにセッションルートがなくなり、途方もなくイライラします。ところで、私は** routes.rb **ファイル内で 'devise_for:users、:controllers => {:omniauth_callbacks =>" users/omniauth_callbacks "}'を実行しました。 ** User.rb **モデルファイル内で、「devise:database_authenticatable、:omniauthable、:recoverable、:rememberable、:trackable、:validatable」また、** Users :: OmniauthCallbacksController **を適切に作成する必要があります。コードのヘルプが必要な場合は教えてください。 – Surya

答えて

10

は次のように

:skip => [:sessions, :registrations] to your routes.rb 

SMTHを追加してください。

関連する問題