Jak na kontrolu oprávnění, a nasledné přesměrování

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

Chtěl bych se zeptat jak na zabezpečení aplikace.
Zde: https://doc.nette.org/…editing-form jsem se dočetl že by se to mělo provadet v kazdem podadavku(odeslani formu, handle, action..)
Nestačí když to okontroluji v startup funkci, proc?

Pokud ne má tedy neco jako isInRole(..) být na zacátku katde funkce action, formSucceeded, hande.. ?
Zkoušel jsem takovy nástřel, ale jak to řešit pokud odkaz na handle mám přes ajax tedy se odešle ajaxem?
Rád bych aby kdyz nema opravnění se přesmerovalo redirectem na Sign:in ale to nefunguje, operace sice neprobehne ale nedojde k přejiti na novou stranku jak toto tedy pořešit?
Díky

Jan Mikeš
Člen | 771
+
0
-

Ve startupu by to stacit melo, nebo jeste lepe v metode checkRequirements(), ktera se vola jeste pred startup().

Domki
Člen | 310
+
0
-

Ok, tu funkci neznám kouknu dík
A ještě pokud bych k tomu chtel pristoupit přes výjimky že vyhodím výjimku, kde tu výjimku bych mel zpracovat a vypsat hlasku? dík

Jan Mikeš
Člen | 771
+
0
-

Pro 404 a 403 v presenteru používám jednoduše $this->error() a $this->error(NULL, IResponse::S403_FORBIDDEN) případně $this->error(NULL, IResponse::S401_UNAUTHORIZED) → 401 pouze v případě REST API, jinak redirect na login page.

Pokud to použiješ mnou popsaným způsobem, požadavek uživatele zpracuje error presenter a vykreslí se příslušná šablona → např. 404.latte.

Domki
Člen | 310
+
0
-

Jestli to teda chápu tak pak nevyhazuješ výjimky ale volal $this->error a tím ti to prejde na Errorxxx presenter?

Jan Mikeš
Člen | 771
+
0
-

Ano, pokud se koukneš do zdrojového kódu presenteru pak si všimneš, že $this->error() není nic jiného než kratší a nette-way zápis pro vyhození výjimky v presenteru ;)

Domki
Člen | 310
+
0
-

Jo, díky, mě pravě nebylo jasné kam se předá vyhození výjimky :)

Jan Mikeš
Člen | 771
+
0
-

O zpracování nezachycených výjimek se stará Application::processException() pokud je to možné tak je posílá na tebou nastavený error presenter ;)

Editoval Jan Mikeš (5. 12. 2016 9:01)