Přepínání mezi weby (non-nette a nette)
- reprona
- Člen | 6
Ahoj, zdravím vás,
příkladně: mám dva projekty jeden non-nette (A) https://www.test.cz a druhý (B) v nette https://sub.test.cz
Přihlásím se na B a dostanu se na A (v podstatě po úspěšném
přihlášení nastavím pár sessions proměnných, které vyžaduje A).
Přihlásím se na A a nedostanu se do B (v podstatě jsem vždycky
unlogged) – nevím, co nastavit, abych byl logged.
PHPSESSID je na obou stranách stejný, zkouším vždy v anonymním okně a mažu (pro jistotu) cache.
V Nette mám nastaveno:
session:
expiration: 14 days
autostart: smart
cookie_secure: true
cookieDomain: '.test.cz'
Ve VirtualHostu mám nastaveno:
<IfModule mod_php5.c>
php_value session.cookie_domain .test.cz
</ifModule>
Už jsem z toho docela zoufalý – Co udělat ideálně pro to, aby se ,,zautorizovalo" z non-nette do nette?
Děkuji předem za konstruktivní nápady.
P.
- Marek Bartoš
- Nette Blogger | 1280
nette/http prefixuje všechna data v session, nemají tak stejnou strukturu jako když je do session zapíšeš přímo. Též potřebuješ mít session v obou aplikacích identicky nastavenou a spoléhat se i na to, že přihlašovací mechanizmus je stejný.
- Martk
- Člen | 661
To nemůžeš u non-nette udělat tohle?
$container = require 'bootstrap.php'; // nebo si uděláš třídu booting a tam si vypneš tracy a nastavíš trošku jinak oproti nette
// session v non-nette
$session = $container->getByType(Session::class);
// user v non-nette
$user = $container->getByType(User::class);
var_dump($user->isLoggedIn());
// prihlaseni v non-nette
$user->login('...', '...');
- reprona
- Člen | 6
@Martk
Přeci nebudu provádět takovou šílenost s prominutím. Celou implementaci
loginu bych musel narvat do non-nette. To si myslím, že je lepší zavolat
login právě na dálku (HTTP Guzzle, …).
@Mabar
Tak to nevím, jak bych zesynchronizoval ty jiné názvy sessions. Ach jo.
@CZechBoY
Any idea?
- Marek Bartoš
- Nette Blogger | 1280
Jaký jiný názvy session proboha? Pokud jsi nic nepřenastavoval, tak se
v obou případech jmenuje PHPSESSID. Zkontroluj si, zda se ti session id
nastavené v jedné appce posílá i do druhé, pak zda vidíš data
v session a nakonec už jen potřebuješ ta prefixovaná data správně zapsat
v non-nette aplikaci. Odkaz na to, jak Nette data prefixuje jsem ti poslal
($_SESSION['__NF']['DATA']
), případně můžeš do non-nette
appky nainstalovat nette/http a přistupovat k session stejně jako
v Nette appce.