Wpis z mikrobloga

#naukaprogramowania #python

Chcę w Django po wypelnieniu formularza i stworzenia z otrzymanych pdf'a, wygenerować losowy klucz, który użytkownik będzie musiał podać, aby móc potem ściągnąć wygenerowany plik.
Razem z danymi chce zapisywać klucz w bazie( danych będę potem potrzebował), aby potem móc go zweryfikować.

Ponieważ nie chce jakoś super kombinować z innymi technologiami i to ma działać, a nie być ładne to myślę o czymś takim:

Stworzyć drop down menu, w którym wyświetlą się nazwy plików(nazwy nie muszą być "chronione") wraz z dodatkowym oknem. W oknie użytkownik poda kod, a następnie wyciągnę nazwę pliku z formularza + podany kod, przefiltruje baze danych po tej parze(nazwa -->kod) jako validator i jak pójdzie to użytkownik dostanie redirect'a do url'a już z plikiem.

Ujdzie takie rozwiązanie czy macie może jakiś inny pomysł ?
  • 9
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

  • 0
@michael93pl zakladajac ze klucz jest unikalny mozesz po prostu filtrowac po wlasnie kluczy, jezeli zwroci wynik, to mozesz od razu dac dostep do pliku. przy dlugich kluczach to dobra opcja.
jezeli chcesz wiekszy poziom bezpieczenstwa to mozesz po zwrocenie query sprawdzic dofatkowo if em czy to ten aplik o ktory chodzilo userowi w formularzu.
mozesz tez za kazdym razem generowac nowy klucz albo ustawic jakis expiration time.
  • Odpowiedz
Nie rozumiem trochę problemu. Zrób stronę do pobrania PDF'a, gdzie będziesz miał prosty formularz z jednym polem - do podania klucza. Po wpisaniu klucza i wysłaniu formularza użytkownik otrzyma swój plik pdf. URL możesz mieć w stylu: /documents/download/
  • Odpowiedz
  • 0
@Thyliamris Właśnie chodzi o to:, że ja sam wygeneruje mu klucz, podam mu, zapisze do bazy, a następnie jeżeli będzie chciał pobrać pdf to musi podać ten klucz, który mu wygenerowalem i podałem ( założenia zadania). No i właśnie o to " wymuszenie " klucza chodzi

@b3rly
W sumie ustawiając 10 znakowy klucz randomow generowany z a-z 0-9 to powinno być ok, sprawdzenie ifem to w sumie chwila roboty więc
  • Odpowiedz
@b3rly: w views:
if request.post --> sprawdzenie podanego klucza z bazą -->jeżeli klucz się zgadza -->redirect do linka który uruchamia ściąganie.

if request.get -->dispatch ?

Nie chroni to tylko sytuacji, w ktorej uzytkownik "odgadnie" url'a sam z siebie, ominie wtedy formularz tak czy siak (przynajmniej jak teraz na szybko o tym myślę)
  • Odpowiedz
  • 0
@michael93pl dokladnie

get:
jezeli żadanie pod adresem /?plik=plik.pdf&?key=abc
dispatch -> sprawdz czy zgadza sie z bd
jezeli tak - > daj dostep do widoku
jezeli nie - > formularz + session message
  • Odpowiedz