Komponenta sa pokúša vytvoriť aj napriek presmerovaniu

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

Dobrý deň,

Mám aplikáciu a overovanie či je užívateľ príhlásený a následné presmerovanie na prihlasovaciu stránku riešim v BasePresenteri. Ak však ako neprihlásený pristúpim na URL, ktorá sa snaží pracovať s komponentou a predáva jej persistentné parametre, napíklad http://mojweb/mojpresenter/?mojakomponenta-persistentnyParameter=hodnota tak napriek tomu že sa volá v BasePresenter::startup() redirect na úplne iný (prihlasovací) presenter, Nette sa snaží vytvoriť komponentu mojakomponenta, čo skončí chybou lebo k jej vytvoreniu potrebuje nejaké udaje od prihláseného uživateľa.

Viete mi poradiť ako to vyriešiť tak, že sa užívateľ aj v tomto prípade presmeruje na prihlasovaciu stránku?

Editoval RichardT (23. 11. 2012 23:27)

Filip Procházka
Moderator | 4668
+
0
-

Ono Nette totiž, když se přesměrovává, tak vytváří odkaz. A když vytváří odkaz, tak koukne na všechny parametry co dostalo a podle toho ten odkaz vytvoří. A na to potřebuje, mimo jiné, i ty komponenty – takže si na ně dareba sáhne.

Prozatím komponenty považuj za součást veřejného rozhraní a počítej s tím, že na ně může kdokoliv sáhnout. Tedy měly by jít vytvořit vždy, ovšem signály a vykreslení by měly být chráněny.

Jestli to považovat za bug nedokážu posoudit. Ale je to známé chování.

RichardT
Člen | 43
+
0
-

Tak idem si skúsiť vytvotriť továrničku, ktora na základe prihlásenia/neprihlásenia vytvorí buď reálnu použiteľnú komponentu, alebo nejakú prázdnu dummy komponentu.