předání ID záznamu pomocí metody POST

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
AZJOL
Člen | 34
+
0
-

Zdravím,

potřeboval bych poradit, jak předám ID pomocí metody POST. Potřebuji, aby v adrese nebylo vidět, jaké ID záznamu posílám. Jedná se o aplikaci, kde si uživatel zobrazí detail svého záznamu (nemůže ho tedy logicky vidět uživatel jiný).

Na stránce je vypsán seznam záznamů a po kliku by měl být redirect na detail záznamu.

Díky moc všem za odpověď.

japlavaren
Člen | 404
+
0
-

ahoj,

ak chapem spravne, chces redirect cez post po kliknuti na zaznam. dost netradicne riesenie ale urcite mas pren svoje dovody.

napadaju ma dve riesenia:

  1. pre kazdy zaznam vytvoris formular, kde bude input hiden s tvojou hodnotou a submit button
  2. spravis jeden form ktory bude mat viacero buttonov s rovnakym name ale roznym value
AZJOL
Člen | 34
+
-1
-

První řešení zní fajn..
Napadlo mě také nějak „zašifrovat“ parametr v metodě GET. Zas tak tajné ty informace nejsou.

Přirovnal bych to k příkladu, kdy uživatel uvidí seznam svých odeslaných emailů a chtěl by si email rozkliknout, kdyby to bylo pomocí metody GET, tak přepíše id na jiné a může vidět emaily jiných uživatelů…

japlavaren
Člen | 404
+
+5
-

tak potom riesis bezpecnostnu chybu ale na nespravnom mieste. nemozes dovolit uzivatelovi aby mal pristup k informaciam ineho uzivatela ak niesu verejne tym, ze zmeni id nech uz je to cislo alebo hocico ine. preto by si mal pre kazdy taky dotaz overovat, ci je ten uzivatel opravneny vidiet tie data a ak nie nedovolit mu to

japlavaren
Člen | 404
+
+2
-

AZJOL napsal(a):

První řešení zní fajn..
Napadlo mě také nějak „zašifrovat“ parametr v metodě GET. Zas tak tajné ty informace nejsou.

Přirovnal bych to k příkladu, kdy uživatel uvidí seznam svých odeslaných emailů a chtěl by si email rozkliknout, kdyby to bylo pomocí metody GET, tak přepíše id na jiné a může vidět emaily jiných uživatelů…

skuseny uzivatel ti dokaze podstrcit post formular s hocakym id. to, ze to nieje vidiet v url pri gete mu nezabrani pouzit to v poste

Oli
Člen | 1215
+
0
-

Přesně jak píše @japlavaren. Na tohle slouží role (pokud může nějakou část vidět více uživatelů) nebo to náleží přímo uživateli. A tam to můžeš ověřit na té nejjednodušší úrovni prostým if ($user->getIdentity))->getId() === $secretObject->getOwnerId()).

Nic složitějšího to není ;-)

AZJOL
Člen | 34
+
0
-

Role jsou mi jasné, ale jak funguje ta podmínka? Resp. get user ID je jasné, ale co znamená: $secretObject->getOwnerId())? Jinak moc děkuji za rady!!

Oli
Člen | 1215
+
+1
-

To je id uživatele, který má přístup k objektu. Pokud jde například o fotky, tak si do db uložíš owner_id a to potom porovnáš s aktuálně přihlášeným uživatelem. Nebo si můžeš uložit pole uživatelů, který mají přístup (pokud jich je víc a nechceš to řešit přes role).