Форум сайта python.su
Здравствуйте,
Только начинаю изучать django, потихоньку пытаюсь писать. Сделал возможность загрузки файла на сервер и скачивания файла с сервера. Теперь пытаюсь понять как сделать так, что бы скачать файл мог только тот кто его и загрузил, на основании кукисов, то есть когда пользователь заходит на страницу ему в кукисы записывается какой то айди, и потом файл загруженый пользователем может быть скачан только пользователем с таким же айди в кукисах. Ну или как правильнее это сделать без регистрации пользователя на сайте. Читал документацию джанго по сессиям но так и не сообразил как применить это для моего случая. Кстати вот как сделал возможность скачивания файла:
urlpatterns += patterns('', (r'^media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT}), )
Офлайн
со статик файл скорее всего просто не получится
Попробуйте через django-private-files.
https://django-private-files.readthedocs.org/en/latest/usage.html
в описании есть пример, который можно доработать под ваши нужды
from django.db import models from django.contrib.auth.models import User from private_files import PrivateFileField def is_owner(request, instance): # тут проверять что ключ есть в session return (not request.user.is_anonymous()) and request.user.is_authenticated and instance.owner.pk = request.user.pk class FileSubmission(models.Model): description = models.CharField("description", max_length = 200) owner = models.ForeignKey(User) # тут хранить ключ доступа uploaded_file = PrivateFileField("file", upload_to = 'uploads', condition = is_owner)
Офлайн
0xFF,
Идея понятна, мотивация не очень ясна. Ваш пользователь сможет скачивать только те файлы, что он сам закачал, но только с той машины, с того браузера, с той ОС с которой он их заливал. При этом ему нельзя чистить куки, иначе он потеряет свои файлы навсегда, причем Вы не очень защищены от подделки и кражи самих куков. Если Вы по какой то причине не хотите авторизовывать своих пользователей, то это же не мешает Вам дать возможность защищать доступ к своим файлам неким паролем, хеш-сумму которого Вы и будете хранить в связке с файлом. Это надежнее, проще и юзабильней.
Офлайн
FishHook
Сейчас обьясню, идея в том что бы пользователь не мог получить прямую ссылку на файл и вставить потом эту ссылку куда нибудь и использовать мой сервер в качестве ресурса, да и впринципе не смог дать скачать тот же файл по этой ссылке другому человеку. Принцип я залил - я и скачал.
Офлайн
>>>прямую ссылку на файл и вставить потом эту ссылку куда нибудь и использовать мой сервер в качестве ресурса
Это решается по-другому, например предоставлением временной ссылки или загрузкой изображения на страницу аяксом.
>>>да и впринципе не смог дать скачать тот же файл по этой ссылке другому человеку
Скачает сам, отправит почтой.
Офлайн
FishHook
Ну пусть отправляет, это уже его дело, я с точки зрения того что бы меня не обвинили в раздаче нелегального контента, он куда нибудь эту ссылку вставит, а там какая нибудь нелегалка. Вопрос, какой айпи, мой айпи, кому атата, мне. Именно с этой точки зрения.
Офлайн
Что атата, прибегут чекисты и сервер конфискуют? Да кому Вы нужны!
Разместите на сайте публичную аферту, типа такой
7.1. “Хостинг Картинок” И ЕГО СЕРВИСЫ, ВКЛЮЧАЯ ВСЕ СКРИПТЫ, КОНТЕНТ И ОФОРМЛЕНИЕ ПОСТАВЛЯЮТСЯ <КАК ЕСТЬ>. АДМИНИСТРАЦИЯ ОТКАЗЫВАЕТСЯ ОТ ВСЯКИХ ГАРАНТИЙ ТОГО, ЧТО САЙТ “Хостинг Картинок” ИЛИ ЕГО СЕРВИСЫ МОГУТ ПОДХОДИТЬ ИЛИ НЕ ПОДХОДИТЬ ДЛЯ КОНКРЕТНЫХ ЦЕЛЕЙ ИСПОЛЬЗОВАНИЯ. АДМИНИСТРАЦИЯ НЕ МОЖЕТ ГАРАНТИРОВАТЬ И НЕ ОБЕЩАЕТ НИКАКИХ СПЕЦИФИЧЕСКИХ РЕЗУЛЬТАТОВ ОТ ИСПОЛЬЗОВАНИЯ САЙТА И(ИЛИ) ЕГО СЕРВИСОВ.
7.2. ВО ИЗБЕЖАНИЕ НЕДОРАЗУМЕНИЙ ВАМ СЛЕДУЕТ СОБЛЮДАТЬ МЕРЫ ПРЕДОСТОРОЖНОСТИ В СКАЧИВАНИИ С САЙТА “Хостинг Картинок” ИЛИ ПО РАЗМЕЩЕННЫМ НА НЕМ ССЫЛКАМ, И ИСПОЛЬЗОВАНИИ ЛЮБЫХ ФАЙЛОВ. АДМИНИСТРАЦИЯ НАСТОЯТЕЛЬНО РЕКОМЕНДУЕТ ИСПОЛЬЗОВАТЬ ТОЛЬКО ЛИЦЕНЗИОННОЕ, В ТОМ ЧИСЛЕ АНТИВИРУСНОЕ, ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ.
7.3. ИСПОЛЬЗУЯ САЙТ “Хостинг Картинок”, ВЫ СОГЛАШАЕТЕСЬ С ТЕМ, ЧТО СКАЧИВАЕТЕ С САЙТА “Хостинг Картинок” ИЛИ С ЕГО ПОМОЩЬЮ ЛЮБЫЕ МАТЕРИАЛЫ НА СВОЙ СОБСТВЕННЫЙ РИСК И НЕСЕТЕ ЛИЧНУЮ ОТВЕТСТВЕННОСТЬ ЗА ВОЗМОЖНЫЕ ПОСЛЕДСТВИЯ ИСПОЛЬЗОВАНИЯ ВАМИ УКАЗАННЫХ МАТЕРИАЛОВ, В ТОМ ЧИСЛЕ ЗА УЩЕРБ, КОТОРЫЙ ЭТО МОЖЕТ ПРИЧИНИТЬ ВАШЕМУ КОМПЬЮТЕРУ ИЛИ ТРЕТЬИМ ЛИЦАМ, ЗА ПОТЕРЮ ДАННЫХ ИЛИ ЛЮБОЙ ДРУГОЙ ВРЕД, КОТОРЫЙ МОЖЕТ БЫТЬ ВЫЗВАН.
7.4. НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ АДМИНИСТРАЦИЯ САЙТА ИЛИ ЕЕ ПРЕДСТАВИТЕЛИ НЕ НЕСУТ ОТВЕТСТВЕННОСТЬ ПЕРЕД ВАМИ ИЛИ ПЕРЕД ЛЮБЫМИ ТРЕТЬИМИ ЛИЦАМИ ЗА ЛЮБОЙ КОСВЕННЫЙ, СЛУЧАЙНЫЙ, НЕУМЫШЛЕННЫЙ УЩЕРБ, ВКЛЮЧАЯ УПУЩЕННУЮ ВЫГОДУ ИЛИ ПОТЕРЯННЫЕ ДАННЫЕ, ВРЕД ЧЕСТИ, ДОСТОИНСТВУ ИЛИ ДЕЛОВОЙ РЕПУТАЦИИ, ВЫЗВАННЫЙ В СВЯЗИ С ИСПОЛЬЗОВАНИЕМ САЙТА “Хостинг Картинок”, СОДЕРЖИМОГО САЙТА “Хостинг Картинок” ИЛИ ИНЫХ МАТЕРИАЛОВ, К КОТОРЫМ ВЫ ИЛИ ИНЫЕ ЛИЦА ПОЛУЧИЛИ ДОСТУП С ПОМОЩЬЮ САЙТА “Хостинг Картинок”, ДАЖЕ ЕСЛИ АДМИНИСТРАЦИЯ ПРЕДУПРЕЖДАЛА ИЛИ УКАЗЫВАЛА НА ВОЗМОЖНОСТЬ ТАКОГО ВРЕДА.
Офлайн
FishHook
Да кому Вы нужны!
Офлайн
Это уже юридическое решение проблемы, а нужно техническое
Офлайн
С таким техническим решением, которое вы предлагаете, у Вас будет целых три пользователя - Вы, тестовый и случайный.
Офлайн