Stránky: 1
Téma zavřeno
- Úvodní stránka
- » Archiv
- » Nette\Web\User – rozne Identity pre rozne casti aplikacie
#1 14. 10. 2008 15:58
- edke
- Člen

- Místo: Kosice
- Registrovaný: 22. 9. 2008
- Příspěvky: 184
Nette\Web\User – rozne Identity pre rozne casti aplikacie
Potreboval by som pracovat s dvoma rozdielnymi objektami Identity pre 2 rozdielne moduly aplikacie. Vychadzam z rozdielnych BasePresenterov pre kazdy modul, v kazdej potrebujem zvlast autorizaciu a zvlast Identity.
Nastavil som vsetko pre jeden modul, a neprichadzam zatial nato, ako to nastavit pre druhy modul:
Environment::getServiceLocator()->addService( new Frontend_Uzivatel, 'Nette\Security\IAuthenticator');
Stale mi $user = Environment::getUser(); v druhom module nacita prvu Identitu, nech ju inicializujem akokolvek.
Offline
#2 14. 10. 2008 16:20
Re: Nette\Web\User – rozne Identity pre rozne casti aplikacie
Nestacilo by toto nastaveni delat v onech ruznych BasePresenterech? Pokazde jine nastaveni (to co zrovna pro danou cast potrebujes). Zkusil bych konctruktor nebo startup().
Offline
#3 14. 10. 2008 16:27
- edke
- Člen

- Místo: Kosice
- Registrovaný: 22. 9. 2008
- Příspěvky: 184
Re: Nette\Web\User – rozne Identity pre rozne casti aplikacie
phx wrote:
Nestacilo by toto nastaveni delat v onech ruznych BasePresenterech? Pokazde jine nastaveni (to co zrovna pro danou cast potrebujes). Zkusil bych konctruktor nebo startup().
Ved tam to prave robim. A v startup(). Napriek tomu, ze nastavenie handlera
je v kazdom Presenteri ine, $user = Environment::getUser() vzdy
nacita rovnaku identitu. Tusim to bude tym, ze stale je v objekte rovnaky nazov
pre cookie.
Offline
#5 14. 10. 2008 16:51
- edke
- Člen

- Místo: Kosice
- Registrovaný: 22. 9. 2008
- Příspěvky: 184
Re: Nette\Web\User – rozne Identity pre rozne casti aplikacie
phx wrote:
Ty chces 2 ruzna soubezna prihlaseni?
ano
Offline
#6 14. 10. 2008 17:10
Re: Nette\Web\User – rozne Identity pre rozne casti aplikacie
Tak to bude asi na Davida. Problem je asi zde: http://api.nette.org/…ser.php.html Nepodporuje to 2 ruzne prihlaseni s jednim prohlizecem.
Offline
#7 14. 10. 2008 17:33
- David Grudl
- Administrator

- Registrovaný: 8. 2. 2005
- Příspěvky: 4236
- Web
Re: Nette\Web\User – rozne Identity pre rozne casti aplikacie
Dvě různá přihlášení zároveň v jednom okně? K čemu by to bylo dobré? Nemyslím, že bych něco takového implementoval.
Offline
#8 14. 10. 2008 17:37
- edke
- Člen

- Místo: Kosice
- Registrovaný: 22. 9. 2008
- Příspěvky: 184
Re: Nette\Web\User – rozne Identity pre rozne casti aplikacie
David Grudl wrote:
Dvě různá přihlášení zároveň v jednom okně? K čemu by to bylo dobré? Nemyslím, že bych něco takového implementoval.
Rozmyslal som nad strukturou webu, a zapacila sa mi myslienka mat v ramci jedneho projektu backend a frontend spolocne. Lenze pre kazdy chcem samozrejme vlastnu autorizaciu, aj jeden aj druhy modul maju rozdielne informacie o uzivateloch, v rozdielnych sql tabulkach s rozdielnou strukturou.
Offline
#9 14. 10. 2008 18:03
- David Grudl
- Administrator

- Registrovaný: 8. 2. 2005
- Příspěvky: 4236
- Web
Re: Nette\Web\User – rozne Identity pre rozne casti aplikacie
Tedy nejde o dvě přihlášení v jednom okně, ale o dva autentizační objekty v jednom projektu. To je jiná.
Pokud bude mít frontend a backed svoji „škatulku“ v config.ini,
můžeš autentizační handlery nastavit přímo tam, jinak použij jako
píšeš Environment::getServiceLocator()....
Druhá věc je zajistit oddělení session a cookies. To lze buď řešit přes adresáře (nastavit proměnné cookie-path, aby se pro každý adresář používali jiné cookies, takže každý by měl vlastní session & autentizační cookie).
Nebo každé dopřát v rámci jedné session oddělený prostor. To znamená upravit třídu User tak, aby název prostoru byl volitelný. Upravím to.
Offline
#10 14. 10. 2008 19:04
- edke
- Člen

- Místo: Kosice
- Registrovaný: 22. 9. 2008
- Příspěvky: 184
Re: Nette\Web\User – rozne Identity pre rozne casti aplikacie
David Grudl wrote:
Tedy nejde o dvě přihlášení v jednom okně, ale o dva autentizační objekty v jednom projektu. To je jiná.
Pokud bude mít frontend a backed svoji „škatulku“ v config.ini, můžeš autentizační handlery nastavit přímo tam, jinak použij jako píšeš
Environment::getServiceLocator()....Druhá věc je zajistit oddělení session a cookies. To lze buď řešit přes adresáře (nastavit proměnné cookie-path, aby se pro každý adresář používali jiné cookies, takže každý by měl vlastní session & autentizační cookie).
Nebo každé dopřát v rámci jedné session oddělený prostor. To znamená upravit třídu User tak, aby název prostoru byl volitelný. Upravím to.
Presne tak, ja som to vravel od zaciatku, mam 2 moduly, v kazdom zvlast inicializujem handler, kazdy handler je platny len pre dany modul. Su to teda 2 cookies s roznymi nazvami. Neviem ako by to mohlo byt s tou cestou, ale to limitovanie na cestu moze byt problem.
Offline
#11 14. 10. 2008 20:44
- David Grudl
- Administrator

- Registrovaný: 8. 2. 2005
- Příspěvky: 4236
- Web
Re: Nette\Web\User – rozne Identity pre rozne casti aplikacie
Zkus tento patch. Měl by umožnit přepínání jmenných prostorů.
Zatím to nelze konfigurovat přes config.ini, takže v bootstrapu
zavolej $user->setNamespace('front'); // nebo 'admin'
Offline
#12 14. 10. 2008 21:12
- edke
- Člen

- Místo: Kosice
- Registrovaný: 22. 9. 2008
- Příspěvky: 184
Re: Nette\Web\User – rozne Identity pre rozne casti aplikacie
David Grudl wrote:
Zkus tento patch. Měl by umožnit přepínání jmenných prostorů. Zatím to nelze konfigurovat přes config.ini, takže v bootstrapu zavolej
$user->setNamespace('front'); // nebo 'admin'
Hmm, v bootstrape ? Myslel som ze ten namespace by bolo dobre definovat v BasePresenteri:
abstract class BasePresenter extends /*Nette\Application\*/Presenter
{
public function startup()
{
Environment::getServiceLocator()->addService( new AclFrontend, 'Nette\Security\IAuthorizator' );
Environment::getServiceLocator()->addService( new Frontend_Uzivatel, 'Nette\Security\IAuthenticator' );
}
}
Ako v bootstrape rozlisim, ci ide o request do adminu ci frontu ? A este ako by mala potom vyzerat inicializacia $user ?
Offline
#13 14. 10. 2008 21:34
- David Grudl
- Administrator

- Registrovaný: 8. 2. 2005
- Příspěvky: 4236
- Web
Re: Nette\Web\User – rozne Identity pre rozne casti aplikacie
Samozřejmě to nemusí být v bootstrapu, klidně v presenteru.
Offline
#14 14. 10. 2008 21:57
- edke
- Člen

- Místo: Kosice
- Registrovaný: 22. 9. 2008
- Příspěvky: 184
Re: Nette\Web\User – rozne Identity pre rozne casti aplikacie
JOj, somar som. Ako som to skusal prvy krat, nenastavil som namespace v Presenteri Auth, ktory nevychadzal z BasePresenter a len tam som nastavoval namespace. Preto iny namespace a preto sa mi ani nepodarilo prihlasit :)
Otestovane a funguje to ! Admin:
object(User)[54]
public 'guestRole' => string 'guest' (length=5)
public 'authenticatedRole' => string 'authenticated' (length=13)
private 'authenticationHandler' => null
private 'authorizationHandler' => null
private 'namespace' => string 'admin' (length=5)
private 'session' =>
object(SessionNamespace)[59]
private 'data' => &
array
'identity' =>
object(Identity)[58]
...
'authenticated' => boolean true
'authkey' => string 'l4b7pz6hcqcjcwg04sw8s8g8' (length=24)
private 'meta' => &null
public 'warnOnUndefined' => boolean false
object(Identity)[58]
private 'name' => string 'edke' (length=4)
private 'roles' =>
array
0 => string 'administrator' (length=13)
private 'data' =>
array
'id' => string '1' (length=1)
'id_rola' => string '3' (length=1)
'login' => string 'edke' (length=4)
'meno' => string 'Eduard' (length=6)
'priezvisko' => string 'Kracmar' (length=7)
'aktivne' => string 't' (length=1)
a vo front casti, kde nie som este len ako guest:
object(User)[29]
public 'guestRole' => string 'guest' (length=5)
public 'authenticatedRole' => string 'authenticated' (length=13)
private 'authenticationHandler' => null
private 'authorizationHandler' => null
private 'namespace' => string 'front' (length=5)
private 'session' => null
null
Offline
Téma zavřeno
Stránky: 1
- Úvodní stránka
- » Archiv
- » Nette\Web\User – rozne Identity pre rozne casti aplikacie


