Jeśli potrzebujesz tylko umiarkowany bezpieczeństwa, moje podejście byłoby następujące:
1) Gdy użytkownik przesyła plik , wygeneruj dla niej trudną do odgadnięcia ścieżkę. Na przykład możesz utworzyć folder z losowo wygenerowaną nazwą dla każdego przesłanego pliku w folderze/static. Można to zrobić bardzo prosto za pomocą tego przykładowego kodu:
file_path = "/static/" + os.urandom(32).encode('hex') + "/" + file_name
W ten sposób będzie to bardzo trudne do odgadnięcia, gdzie przechowywane są pliki inni.
2) W bazie danych połącz właściciela z plikiem. Przykładowy schemat może być:
uploads(id, user_id, file_path)
3) Użyj właściwość dla swoich FileFields w modelu, aby ograniczyć dostęp do pliku, w ten sposób:
class YourModel(models.Model)
_secret_file = models.FileField()
def get_secret_file(self):
# check in db if the user owns the file
if True:
return self._secret_file
elif:
return None # or something meaningful depanding on your app
secret_file = property(get_secret_file)
proponuję podążać [Jak zrobić plik prywatny poprzez zapewnienie url że tylko uwierzytelnionym użytkownikom Zobacz] (http: //stackoverflow.com/questions/28007770/), ale musisz zaimplementować własną metodę, aby ograniczyć dostęp innych użytkowników do ...! –