2010-05-17 21 views
5

Tôi đang ở giai đoạn đầu của việc xây dựng một ứng dụng bằng Rails 3. Xác thực người dùng được hỗ trợ bởi Authlogic mà tôi đã thiết lập khá nhiều tiêu chuẩn (as per the example docs) và mọi thứ đang hoạt động như mong đợi tại địa phương.Rails 3, Authlogic, NGINX và xác thực cơ sở HTTP không hoạt động độc đáo với nhau

Tôi vừa triển khai ứng dụng để cài đặt máy chủ sạch của Centos 5.4/NginX/Passenger để nhân viên có thể bắt đầu đăng nhập và nhập nội dung, v.v. vì vậy tôi đã sử dụng mô-đun auth cơ bản của NginX để giữ toàn bộ trang web đằng sau một cấp độ xác thực khác.

Thật không may Xác thực của Authlogic và xác thực cơ bản của NginX dường như xung đột với nhau. Nếu auth cơ bản là trên sau đó nó là không thể đăng nhập với Authlogic, nhưng nếu tôi vô hiệu hóa auth cơ bản sau đó Authlogic hoạt động như mong đợi.

Tôi chưa đăng bất kỳ mã nào vì tôi thực sự không chắc chắn mã nào sẽ có liên quan. Tôi tự hỏi liệu đây có phải là một vấn đề đã biết và nếu có bất kỳ thay đổi nào tôi có thể thực hiện đối với cấu hình để làm tròn vấn đề?

Trả lời

13

Tôi có thể trả lời câu hỏi của riêng mình (sau vài giờ tìm kiếm hoàn toàn sai địa điểm). Một bài kiểm tra tốt trên Authlogic::Session::Config đã thực hiện thủ thuật.

class UserSession < Authlogic::Session::Base 
    allow_http_basic_auth false 
end 
+1

Wow .. rất vui vì tôi đã tìm thấy điều này - Tôi đã cố gắng giải quyết vấn đề này trong khoảng 3 ngày. Cảm ơn! – zaius

+0

Cảm ơn bạn đã giúp tôi rất nhiều. –

+0

Cảm ơn rất nhiều! – dangerousdave

1

Tôi vẫn chưa thử Rails 3, vì vậy câu trả lời của tôi sẽ tổng quát hơn. Và tôi không biết mô-đun auth cơ bản cho NginX.

  1. Nếu nhóm của bạn được kết nối với địa phương, bạn có thể tạo máy chủ có thể truy cập từ mạng cục bộ.
  2. Nếu bạn cần truy cập qua Internet, bạn có thể ẩn nó sau VPN.
  3. Bạn có thể đặt quyền truy cập vào trang web chỉ qua ip cục bộ và cấp quyền truy cập ssh cho bất kỳ ai cần. Thật dễ dàng để tạo proxy vớ qua ssh (trong linux: ssh -D 8080 [email protected]; trong đó 8080 là số cổng, sau đó đặt proxy vớ trong trình duyệt và bạn có thể ăn trưa yoursever.com:3000).
  4. Tôi nghĩ NginX cho phép bạn đặt IP được phép và từ chối khác - vì vậy bạn có thể sử dụng nó cũng để hạn chế quyền truy cập.
  5. Và bạn cũng có thể tạm thời thêm vào ApplicationControllerbefore_filter :require_login :), vì vậy chỉ trang đăng nhập mới có thể sử dụng được trên toàn thế giới.

Hy vọng điều đó sẽ hữu ích!

+0

Cảm ơn đề xuất của bạn. Cuối cùng tôi đã trả lời câu hỏi của riêng mình. Giải pháp nằm trong tài liệu, chỉ cần nhìn đủ cứng. – aaronrussell

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