Tôi đang tạo trang web nơi người dùng đã đăng ký có thể tải lên tệp. Những tập tin đó sau đó được phục vụ thông qua Apache. Chỉ những người dùng đã đăng nhập mới có thể truy cập các tệp đó.Truy cập phương tiện truyền thông tĩnh an toàn trên trang web Django
Tôi đã đọc this page nhưng có vẻ như mọi người sẽ phải đăng nhập hai lần để truy cập cả trang web và phương tiện, mỗi lần sử dụng một loại hộp đăng nhập khác.
Có cách nào xung quanh vấn đề này hoặc có cách nào khác để hạn chế quyền truy cập vào phương tiện tĩnh do Apache cung cấp bằng cơ sở dữ liệu xác thực Django không?
Tôi đang sử dụng mod_python.
EDIT: Làm thế nào tôi đã kết thúc giải quyết này sau khi đọc câu trả lời Văn Gale và this:
- Chuyển sang WSGI.
- cài đặt mod_xsendfile
- chuyển tất cả các tập tin media nào vào một thư mục con trong/media/công
- gia tăng quyền truy cập vào các thư mục công cộng sử dụng một Alias / media//var/www.../media/public công
- WSGIScriptAlias thêm/media/bảo vệ//var/www.../apache/django.wsgi (cùng xử lý như đối với phần còn lại của trang web)
- Added XSendFile On và XSendFileAllowAbove On
- để ứng dụng Django tôi đã thêm một urlconf cho/media/protected mà về cơ bản những gì là here, chỉ sửa đổi cho xác thực của tôi hệ thống phân phối. Nó xử lý các url như/media/protected/GROUP_ID/file để chỉ các thành viên của GROUP mới có thể tải xuống các tệp.
Vấn đề khác có thể xảy ra với cách tiếp cận được mô tả trong tài liệu Django là có vẻ như đang sử dụng xác thực cơ bản - điều này sẽ gửi mật khẩu trong cleartext được mã hóa base64, vì vậy không an toàn trừ khi bạn cũng sử dụng SSL cho tất cả các yêu cầu. –