Front/admin autorizace/autentizace – dohromady nebo odděleně?

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

Jakým způsobem řešíte autentizaci/autorizaci u klasické aplikace kdy máte backend, kam mají přístup jen administrátoři (s různým oprávněním) a frontend, kde se přihlašují uživatelé (např. nakupující v eshopu). Používáte odděléné Authenticatory a tedy i sólo tabulky v databázi, nebo na to hledíte jako na jednu entitu a tudíž vše v jedné tabulce?

Viděl jsem oba názory, více převládala varianta je to jedna entita a dělí to role. Ale pokud pohlédnu na variantu druhou, tak u administrátorů ukládám úplně jiné informace než například u těch nakupujících na eshopu.

Pak mě ještě napadla varianta co je společné, bude jedna entita, a uživatele a admina podědím a doplním atirbuty, které potřebuji.

A je vůbec v Nette nějak rozumně řešitelný případ, mít tu verzi s dvěma entitami? V presenteru se volá přeci jen user přes $this->getUser(), což může být celkem problém v případě, že by bylo více entit. Nebo mi něco uniká?

enumag
Člen | 2118
+
0
-

Zatím to řeším jedním authenticatorem pomocí rolí ale začíná mi to trochu vadit. Existují nějaké addony pro použití více authenticatorů (nevím přesně jak to funguje), ale není to ideální. Dle mého názoru by se to mělo vyřešit přímo v Nette společně s tímhle.

llsm
Člen | 121
+
0
-

Ja mam u nekterych rozsahlejsich aplikaci uplne oddeleny frontend a backend, backend je samostatny projekt na subdomene. Vetsinou jsem dosel k tomu, ze frontend a backend maji tak malo spolecneho, ze mi to ani neprislo jako moc vic prace a naopak se nemusim starat o ruzna bezpecnostni rizika. Ma to samozrejme i svoje nevyhody (nektere kusy kodu se opakuji v obou castech).

Editoval llsm (17. 9. 2013 15:20)

na1k
Člen | 288
+
0
-

Taky se přimlouvám za oddělené přihlašování.

Na začátku to sice vždycky vypadá, že logicky jsou všechno v základu stejní uživatelé a stačí rozlišovat rolema. V praxi se pak ale rozšiřuje funkcionalita a v drtivé většině případů se začne přední a zadní uživatel dost rozcházet. Do chce třeba někdo přidat ještě FB přihlášení a v tu chvíli už je to docela mazec.

Takže ústupek od idealistického návrhu směrem k praktičnosti :)

Editoval na1k (17. 9. 2013 15:39)

enumag
Člen | 2118
+
0
-

@na1k: Jen aby někdo udělal RFC. :-D

na1k
Člen | 288
+
0
-

Ještě doplnění pro @Jiří Nápravník

V aplikaci jde velice snadno mít oddělené uživatele. V presenteru je sice uživatel vždy jediný, ale typicky je aplikace rozdělená do modulů. Každý modul pak v BasePresenteru zavolá při startupu $this->user->storage->setNamespace('front') (resp. back), čímž se uživatelé naprosto oddělí a můžou se nezávisle přihlašovat.

Jiří Nápravník
Člen | 710
+
0
-

Předně se omlouvám za pozdější reakci, dříve jsem se k tomu nedostal.

Použiji asi multiauthenticator díky na1k za info o nastavení namespace. a na to směřuje moje otázka. Pokud budu mít pro Security/User dva namespace a budu chtít teďka předat si Security/User pomocí DI v contructoru, bude to zapisovat do toho správného? Zkrátka abych pak nezapisoval Usera z frontendu do administrace a naopak.