Dưới đây là một vài ý tưởng:
# app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
# ...
http_basic_authenticate_with :name => "frodo", :password => "thering", :if => :admin_controller?
def admin_controller?
self.class < ActiveAdmin::BaseController
end
Hoặc, phiên bản monkeypatching
# config/initializers/active_admin.rb
# somewhere outside the setup block
class ActiveAdmin::BaseController
http_basic_authenticate_with :name => "frodo", :password => "thering"
end
Nếu bạn chỉ muốn bảo vệ tài nguyên cụ thể, bạn có thể sử dụng các khối điều khiển:
# app/admin/users.rb
ActiveAdmin.register Users do
controller do
http_basic_authenticate_with :name => "frodo", :password => "thering"
end
# ...
end
Tôi đã hy vọng rằng tôi sẽ có thể mở rộng bộ điều khiển theo cách này trong config/initializers/active_admin.rb
trong khối thiết lập, nhưng điều này không làm việc cho tôi:
# app/admin/users.rb
ActiveAdmin.setup do |config|
config.controller do
http_basic_authenticate_with :name => "frodo", :password => "thering"
end
# ...
end
Bạn có thể thử nó mặc dù, vì nó có thể là một điều phiên bản ActiveAdmin (Tôi có thể thề rằng tôi thấy rằng tài liệu ở đâu đó ...)
Chúc may mắn, tôi hy vọng điều này sẽ hữu ích.
UPDATE: Một cặp vợ chồng thêm nhiều lựa chọn:
Tôi đã không nhận ra trước đó: before_filter trong activeadmin cấu hình mất một khối.
# config/initializers/active_admin.rb
ActiveAdmin.setup do |config|
# ...
config.before_filter do
authenticate_or_request_with_http_basic("Whatever") do |name, password|
name == "frodo" && password == "thering"
end
end
end
Và ... chỉ còn một ý tưởng nữa. Có vẻ như bạn không quan tâm đến thêm bất cứ điều gì để application_controller, nhưng phiên bản này là không có điều kiện như là người đầu tiên trên:
# app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
def authenticate_admin
authenticate_or_request_with_http_basic("Whatever") do |name, password|
name == "frodo" && password == "thering"
end
end
end
# config/initializers/active_admin.rb
ActiveAdmin.setup do |config|
# ...
config.authentication_method = :authenticate_admin
end
này, cảm ơn bạn đã liệt kê tất cả các tùy chọn có sẵn! Việc đầu tiên là một trong những tôi đã nhận thức được, nhưng không muốn thực hiện ở tất cả các chi phí (lọc có điều kiện hút, nó cũng được đánh giá bởi tất cả các hành động mở). Thứ hai là một ứng cử viên tốt đẹp. Thứ ba không phải là trường hợp sử dụng của tôi.Thứ tư là những gì tôi mong đợi (mặc dù không phải với cú pháp đó) được thực hiện bất cứ lúc nào nhóm quản trị hoạt động nhận ra không phải tất cả các ứng dụng đường ray đều có/cần một hệ thống xác thực. Tôi nghĩ rằng tôi sẽ đi với đề nghị thứ hai của bạn và báo cáo cho bạn trở lại ngay sau khi tôi có một đánh giá. Thx lần nữa! – ChuckE
@ChuckE: Có vẻ như tùy chọn thứ hai sẽ hoạt động tốt cho bạn. Tôi chỉ cần thêm một vài chi tiết dựa trên 'authentication_method' và' before_filter'. Điều cuối cùng có thể là tốt nếu có bất cứ nơi nào khác bạn có thể muốn xác thực cho người dùng quản trị ... Sau khi xem xét tất cả chúng một lần nữa, tôi nhận ra rằng tôi nghĩ tôi thích chỉnh sửa đầu tiên (sử dụng 'config.before_filter') tốt. Chúc may mắn! –
Tôi cũng theo ý kiến của bạn, một giải pháp còn lại trong trình khởi chạy quản trị hoạt động mặc định có vẻ như là một người chiến thắng! – ChuckE