2009-09-03 30 views
9

Tôi khá mới với django và chỉ cần thử một vài thí nghiệm đơn giản để làm cho đôi chân của tôi ướt. Tôi đang chạy django 1.0, prefork2 prefork và mod_wsgi. Tôi đang cố tạo một trang web có cấu trúc url saudjango - bảo vệ một số đường dẫn web với xác thực cơ bản

/ 
/members 
/admin 

gốc là cơ bản là khu vực công cộng.
đường dẫn thành viên phải được bảo vệ bằng cách sử dụng xác thực cơ bản (có thể được xác thực bởi apache)
đường dẫn quản trị phải được bảo vệ bằng cách sử dụng xác thực django được tích hợp sẵn.

làm theo các ví dụ trong tài liệu tôi về cơ bản có thể bảo vệ toàn bộ trang web bằng xác thực cơ bản, nhưng đó không phải là những gì tôi muốn.

trừ từ cấu hình máy chủ ảo:

WSGIScriptAlias//django/rc/apache/django.wsgi 
<Directory /django/rc/apache> 
AuthType Basic 
AuthName "Authentication Required" 
AuthUserFile "/django/_HTPASSWD/.htpasswd" 
Require valid-user 

# Order allow,deny 
# Allow from all 
</Directory> 

bất cứ ai có thể giúp chỉ cho tôi đi đúng hướng (hoặc ra khỏi căn hộ cho tôi biết = P) về cách làm này có thể?

nhờ


chỉnh sửa: sau khi chơi xung quanh một chút tôi phát hiện ra tôi có thể làm một cái gì đó như:

WSGIScriptAlias//django/rc/apache/django.wsgi 
<Directory /django/rc/apache> 
Order allow,deny 
Allow from all 
</Directory> 

WSGIScriptAlias /members /django/rc/apache_httpauth/django.wsgi 
<Directory /django/rc/apache_httpauth> 
AuthType Basic 
AuthName "Authentication Required" 
AuthUserFile "/django/_HTPASSWD/.htpasswd" 
Require valid-user 

</Directory> 

File django.wsgi về cơ bản là cùng một tập tin sao chép vào thư mục khác để WSGIScriptAlias ​​khác nhau. Đó là hack-ish nhưng nó hoạt động ..

Có cách nào tốt hơn để làm những gì tôi muốn không?
Có bất kỳ nhược điểm nào để thực hiện việc này như thế này không?

nhờ

Trả lời

8

Thay đổi:

<Directory /django/rc/apache_httpauth> 
AuthType Basic 
AuthName "Authentication Required" 
AuthUserFile "/django/_HTPASSWD/.htpasswd" 
Require valid-user 
</Directory> 

tới:

<Location /members> 
AuthType Basic 
AuthName "Authentication Required" 
AuthUserFile "/django/_HTPASSWD/.htpasswd" 
Require valid-user 
</Location> 

Tôi không tin bạn nên cần:

WSGIScriptAlias /members /django/rc/apache_httpauth/django.wsgi 
+0

toàn bộ trang web được thực hiện trong django, không jsut phần admin. nếu tôi lấy WSGIScriptAlias, apache biết cách chạy trang django? tức là/thành viên là đường dẫn web được xác định trong urls.py. nó không tồn tại trên hệ thống tệp. btw tôi nhớ đọc nội dung trên blog của bạn để tham khảo về nội dung django trong quá khứ. chỉ muốn nói thx. –

+0

Bạn vẫn giữ WSGIScriptAlias ​​đầu tiên để gắn ứng dụng vào thư mục gốc của trang web, chỉ cần loại bỏ URL phụ. Tôi giả sử ở đây rằng họ cuối cùng cũng giải quyết cùng một ứng dụng. Chỉ thị Vị trí chỉ áp dụng hạn chế cho tập hợp con URL đó cho ứng dụng chính. –

+0

Tôi không nhận thấy rằng bạn đã chỉ định chỉ thị "Vị trí" thay vì chỉ thị "Thư mục". Tôi sẽ thử vào ngày mai. cảm ơn! –

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