Tôi muốn triển khai xác thực cơ sở HTTP trên máy chủ dàn dựng của mình, nhưng chỉ cho những người bên ngoài mạng cục bộ. Tôi có một ứng dụng Rails 3.1. Trong application.rb, tôi có như sau:Xác thực HTTP có điều kiện cơ bản
class ApplicationController << ActionController::Base
http_basic_authenticate_with :realm => "Staging", :name => "user", :password => "password" if :need_authentication?
private
def need_authentication?
Rails.env == "staging" && request.remote_addr !~ /^192.168.0.\d{1,3}$/
end
end
Đây là chà: ngay cả khi các phương pháp need_authentication?
rõ ràng lợi nhuận false
, ứng dụng vẫn hỏi tôi để xác thực, như thể nó hoàn toàn phớt lờ các mệnh đề if cuối cùng.
Vì vậy, có cách nào để chỉ yêu cầu xác thực trong các điều kiện nhất định không?
'http_basic_authenticate_with' là một phương pháp học. Tôi đã thử đặt nó vào trong một phương thức khác, như bạn đã mô tả ở trên, nhưng điều đó mang lại cho tôi một ngoại lệ 'undefined method'. – partydrone