2011-12-21 17 views
6

Tôi đã tạo ứng dụng cho phép người dùng xác thực đối với Active Directory bằng omniauth-ldap. Nếu đây là người dùng mới, xác thực thành công sẽ tạo người dùng cho họ dựa trên thông tin được trả về từ AD. Nếu người dùng đã tồn tại, nó chỉ đăng nhập vào. Người dùng không đăng ký ứng dụng, họ chỉ cần đăng nhập bằng thông tin đăng nhập AD. Và tôi không bao giờ muốn người dùng đăng nhập bằng thông tin đăng nhập cơ sở dữ liệu.Định cấu hình tuyến đường khi tạo ra omniauth để xác thực

Tôi không thể tìm ra cách loại bỏ hoặc thay đổi xung quanh một số tuyến đường. Ví dụ: nếu người dùng truy cập/sign_in họ sẽ nhận được xác thực cơ sở dữ liệu. Và nếu người dùng truy cập sign_up, họ sẽ được đưa đến trang để đăng ký trang web. Tôi muốn người dùng truy cập/sign_in được đưa đến thông tin đăng nhập LDAP là/users/auth/ldap. Tôi nghĩ rằng tôi cần phải thực hiện một tuyến đường tùy chỉnh, nhưng tôi không chắc chắn mà bộ điều khiển tôi cần để hướng người dùng đến. Và tôi muốn làm cho trang sign_up biến mất hoàn toàn.

Hiện tại tôi có liên kết cho phép người dùng đăng nhập bằng ldap và đường dẫn cho đó là user_omniauth_authorize_path (: ldap). Tôi chỉ không chắc chắn làm thế nào để dịch đó vào một cái gì đó mà file config/routes.rb của tôi hiểu được. Đây là những gì tôi có trong các tuyến đường ngay bây giờ.

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 

Khi tôi chạy các tuyến đường rake tôi không thấy bất kỳ tuyến đường nào cho người dùng_omniauth_authorize_path mà tôi đoán là do tuyến đường đó được tạo ra. Vì vậy, tôi nghĩ rằng tôi cần phải có các tuyến đường của tôi trỏ đến một bộ điều khiển suy nghĩ, nhưng tôi dường như không thể tìm thấy con đường đúng.

+2

Bạn cần thay đổi/dev/new.html.erb để không hiển thị biểu mẫu đăng nhập. Và nếu bạn xóa 'database_authenticatable', bạn sẽ không có lộ trình phiên trong ứng dụng của mình, điều này gây phiền toái theo cách. BTW, tôi vừa làm: 'devise_for: users,: controllers => {: omniauth_callbacks =>" người dùng/omniauth_callbacks "}' trong tập tin ** routes.rb ** của tôi. và 'devise: database_authenticatable,: omniauthable,: recoverable,: rememberable,: trackable,: validatable' trong tập tin mô hình ** User.rb **. Ngoài ra, bạn cần phải tạo ra một ** Người dùng :: OmniauthCallbacksController ** cho phù hợp. Hãy cho tôi biết nếu bạn cần trợ giúp về mã? – Surya

Trả lời

Các vấn đề liên quan