kontrola oprávnění, checkRequirements()

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

s hosiplanem jsem se dnes na jabberu bavil o kontrole oprávnění pro různé akce v prezenteru. po přečtení dokumentace (https://doc.nette.org/…thentication), kde jsem získal základní informace o přihlašování a oprávnění v nette2, jsem začal řešit, jakým způsobem bych měl kontrolovat oprávnění uživatele. dostal jsem nápad, že bych do startup() přidal podmínku, která by kontrolovala, jestli má uživatel oprávnění pro daný <presenter>/<action>, v ACL bych pak například povolil užiatelům přístup na Comments:view a registrovaným na Comments:add. to se ale ukázalo jako ne úplně ideální řešení, které navíc obsahuje bezpečnostní díru – kdyby uživatel zadal podobný požadavek na server (POST /comments/cokoliv/?do-postForm=submit&…), celou kontrolu by obešel a k formuláři postForm (vytvořený pomocí createComponent) by se takový zlý uživatel dostal i bez oprávnění.

pravděpodovně jediná cesta, jak správně kontrolovat zlé úmysly uživatele je tedy přidat kontrolu do všech metod prezenteru. ptám se, jak takovou kontrolu udělat. byl jsem odkázán na checkRequirements() (https://api.nette.org/…ter.php.html#265), což je metoda (možná) řešící přesně můj problém, nicméně nevím jak ji v nette použít. kdyby byl někdo ochotný napsat krátký příklad použití (na tom bych pochopil nejlépe), bylo by to super, díky

Filip Procházka
Moderator | 4668
+
0
-

Asi jsme se úplně nepochopili :)

Řekl jsem ti, že mít akci presenteru jako privilege mi nedává smysl. A že máš kontrolovat v checkRequirements jestli to uživatel může vidět a v akcích kde něco měníš, nebo v akcích formuláře, jestli uživatel má právo udělat tu konkrétní úpravu.

Editoval HosipLan (14. 9. 2011 8:09)