Jak zjistit identitu uživatele podle cookie
- oldrich.valek
- Člen | 21
Rozchodil jsem Websocketový server (http://socketo.me/) a potřebuji zjistit, zdali se mi připojil přihlášený uživatel. Chci tedy získat Nette\Security\Identity. Ve zbytku webu je přihlašovací prostor nastavován takto:
// basePresenter
$this->user->getStorage()->setNamespace('namespace');
Znám cookie a většinu hlaviček, takže jsem se pokoušel vytvořit falešný Nette\Http\Request a response, pomocí nich potom Nette\Http\Session a následně Nette\Http\UserStorage. UserStorage mi však při zavolání getIdentity() vrací pořád NULL.
Stále se mi nedaří získat v sessionSection → data private něco
jiného než authenticated ⇒ NULL, identity ⇒ NULL:
code
Nette\Http\UserStorage #d870
namespace private ⇒ „namespace“ (10)
sessionHandler private ⇒ Nette\Http\Session #8394
| regenerated private ⇒ TRUE
| options private ⇒ array (14)
| | gc_maxlifetime ⇒ 15548400
| | cookie_lifetime ⇒ 15548400
| | referer_check ⇒ ""
| | use_cookies ⇒ 1
| | use_only_cookies ⇒ 1
| | use_trans_sid ⇒ 0
| | cookie_path ⇒ „/“
| | cookie_domain ⇒ ""
| | cookie_secure ⇒ FALSE
| | cookie_httponly ⇒ FALSE
| | cache_limiter ⇒ NULL
| | cache_expire ⇒ NULL
| | hash_function ⇒ NULL
| | hash_bits_per_character ⇒ NULL
| request private ⇒ Nette\Http\Request #54ca
| | method private ⇒ „GET“ (3)
| | url private ⇒ Nette\Http\UrlScript #abee { … }
| | query private ⇒ array ()
| | post private ⇒ array ()
| | files private ⇒ array ()
| | cookies private ⇒ array (9) [ … ]
| | headers private ⇒ array (1) [ … ]
| | remoteAddress private ⇒ „10.0.0.51“ (9)
| | remoteHost private ⇒ NULL
| | rawBody private ⇒ NULL
| response private ⇒ Nette\Http\Response #def0
| | cookieDomain ⇒ ""
| | cookiePath ⇒ „/“
| | cookieSecure ⇒ FALSE
| | cookieHttpOnly ⇒ TRUE
| | warnOnBuffer ⇒ TRUE
| | code private ⇒ 200
sessionSection private ⇒ Nette\Http\SessionSection #6fb5
| session private ⇒ Nette\Http\Session #8394
| | regenerated private ⇒ TRUE
| | options private ⇒ array (14) [ … ]
| | request private ⇒ Nette\Http\Request #54ca { … }
| | response private ⇒ Nette\Http\Response #def0 { … }
| name private ⇒ „Nette.Http.UserStorage/namespace“ (33)
| data private ⇒ array (2)
| | authenticated ⇒ NULL
| | identity ⇒ NULL
| meta private ⇒ NULL
| warnOnUndefined ⇒ FALSE
code
Tak jsem to po hodinách zkoušení vzdal a vyřešil to tak, že si u každého uživatele pamatuji nějaký token, který si předám v cookie. Websocketový server podle něj potom rozpozná uživatele.
Editoval oldrich.valek (25. 2. 2015 15:08)
- oldrich.valek
- Člen | 21
No to jsem zkoušel. I tohle: https://github.com/…ion-provider Ale identitu uživatele se mi z toho stejně nepodařilo dostat. Je teda možné, že jsem na to nešel tak jak tvůrci zamýšleli. Teď koukám že ty jsi vlastně tvůrce. Chápu to tedy dobře, že potom v mětodě onOpen($conn) vytvořím Nette\Http\UserStorage pomocí $conn->session a tu identitu by mi to mělo najít?
Editoval oldrich.valek (25. 2. 2015 8:57)