Nette jako rychlá autorizační vrstva?
- badtaste
- Člen | 9
Zdravím, Nette používám v několika jednoduchých aplikacích a vcelku mi vyhovuje. Nyní ale řeším problém, zda se dá taky použít jako autorizace ke zdroji cacheovaných (jak se to píše česky?) obrazků mapy. Bez autorizace jsou obrázky poskytované pomoci aplikace TileCache napsané v Pythonu.
Doba odezvy na localhost je okolo 20ms na jeden obrazek. Pokud ale nechám obrázky procházet přes Nette kde v BasePresenteru mam
if (!$this->user->isLoggedIn) { ....}
a v obsluznem presenteru
public function actionImgCache () {
$httpRequest = $this->context->httpRequest;
$uri = $httpRequest->getUrl();
$remoteHost = $this->context->parameters['remotehost'];
$url = $host."?".$uri->query;
$loaded_url = file_get_contents($url);
$header("Content-type: image/png");
echo $loaded_url;
exit();
}
tak se čas zvýší na cca 400ms.
Chtěl bych se proto zeptat zda někdo netuší na jaký čas bych se mohl dostat. A zda není potřeba něco v Nette vypnout nebo přenastavit, případně zda použité funkce PHP dávají smysl případně zda to neudělat celé nějak jinak. Uzivatel se ale prvotne loguje pomoci Nette s tim nejde asi nic udelat (Jako prejit na uplne neco jineho)
Diky za pripominky, zkusenosti, proste cokoliv,
BT
- badtaste
- Člen | 9
Stacilo by mi HTTP overeni, ale nevim jak prenest prihlaseni z Nette na toto prihlaseni. Jak jsem psal uzivatel je prihlasen do aplikace napsane v Nette a pak teprve muze a take nemusi vyuzit sluzby poskytovani obrazku.
Neslo by se dostat nejak k sessions vytvorenych Nette a naslednou autorizaci provadet pomoci klasickych funkci PHP pro overeni pomoci sessions promenych?
BT
- petr.pavel
- Člen | 535
Těch 400ms mi přijde moc. Možná na localhostu s ne-minifikovaným Nette a zapnutým debug barem. Ale na produkci? Není potřeba optimalizovat ověření uživatele? Jestli jsou jich tisíce, tak index na db tabulku udělá zázraky :-)
Asi potřebuješ, aby cesta ke cacheovaným (taky nevím) obrázkům byla z pohledu prohlížeče vždy stejná, že? Jinak bys totiž mohl vytvářet unikátní symlinky a po nějaké době je zase mazat cronem. Prohlížeč by nikdy neměl přímý přístup ke skutečnému adresáři, jen přes symlink. Tím bys vynutil autentizaci přes Nette jen každých x minut. Nepraktické pro jednotlivé obrázky, jestli jsou jich tisíce. Šlo by obejít symlinky na adresář, ale to zase nemůžeš ověřovat přístupová práva uživatele na úrovni obrázku.
Zajímalo by mě, jestli je možné z PHP nastavit obsah $_SERVER[‚PHP_AUTH_DIGEST‘] a tím uživatele přihlásit z Nette. Pak bys mohl v adresáři s obrázky aktualizovat .htpasswd. Stejný problém ale, jako se symlinky – jak povolení k přístupu odstranit.
P.S. Místo exit(); bys měl mít správně $this->terminate();