我構建了一個應用程序,允許用戶使用omniauth-ldap對Active Directory進行身份驗證。如果這是一個新用戶,成功的身份驗證會根據AD返回的信息爲他們創建一個用戶。如果用戶已經存在,它只會登錄它們。用戶不會註冊該應用程序,他們只需使用AD憑據登錄。我從不希望用戶使用數據庫憑證登錄。僅在使用omniauth進行身份驗證時在配置中配置路由
我無法弄清楚如何擺脫或改變一些路線。例如,如果用戶訪問/ sign_in,他們將獲得數據庫身份驗證。如果用戶訪問sign_up,他們將被帶到一個頁面來註冊該網站。我希望將訪問/ sign_in的用戶帶到LDAP登錄名爲/ users/auth/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/sessions/new.html.erb以顯示登錄表單。如果你刪除了'database_authenticatable',你將最終在你的應用中沒有會話路由,這在某種程度上令人沮喪。順便說一句,我只是:'devise_for:users,:controllers => {:omniauth_callbacks =>「users/omniauth_callbacks」}'在我的** routes.rb **文件中。以及** User.rb **模型文件中的'devise:database_authenticatable,:omniauthable,:recoverable,:rememberable,:trackable,:validatable'。此外,您需要相應地創建一個** Users :: OmniauthCallbacksController **。讓我知道你是否需要代碼幫助? – Surya 2012-10-29 12:11:46