我需要解码从我的会话数据返回的这个Symfony代码块,然后找到那个人的用户ID,用户名和电子邮件。所以我设法获取这样的数据,但不适用于用户信息部分:
$session = $this->get('session');
$userSee = $session->get('_security_user.context')->getToken()->getUser();
var_dump($session);
结果:
object(Symfony'Component'HttpFoundation'Session'Session)#105 (3) {
["storage":protected]=>
object(Symfony'Component'HttpFoundation'Session'Storage'NativeSessionStorage)#107 (5) {
["bags":protected]=>
array(2) {
["attributes"]=>
object(Symfony'Component'HttpFoundation'Session'Attribute'NamespacedAttributeBag)#106 (4) {
["namespaceCharacter":"Symfony'Component'HttpFoundation'Session'Attribute'NamespacedAttributeBag":private]=>
string(1) "/"
["name":"Symfony'Component'HttpFoundation'Session'Attribute'AttributeBag":private]=>
string(10) "attributes"
["storageKey":"Symfony'Component'HttpFoundation'Session'Attribute'AttributeBag":private]=>
string(15) "_sf2_attributes"
["attributes":protected]=>
&array(1) {
["_security_user.context"]=>
string(1995) "C:74:"Symfony'Component'Security'Core'Authentication'Token'UsernamePasswordToken":1906:{a:3:{i:0;N;i:1;s:17:"username.password";i:2;s:1851:"a:4:{i:0;O:30:"AVCMS'Bundles'Users'Model'User":2:{s:7:"*data";a:19:{s:2:"id";s:1:"1";s:8:"username";s:5:"admin";s:8:"password";s:60:"$2y$09$/hLaciuGQyCLkpropsW0NOrW8uNoTSwKCPO2yDW4NnWlmhapRGnLu";s:5:"email";s:19:"test@gmail.com";s:15:"email_validated";s:1:"0";s:5:"about";s:0:"";s:9:"role_list";s:16:"ROLE_SUPER_ADMIN";s:8:"location";s:0:"";s:9:"interests";s:0:"";s:7:"website";s:0:"";s:6:"joined";s:10:"1456808076";s:6:"avatar";s:0:"";s:11:"cover_image";s:0:"";s:15:"registration_ip";N;s:7:"last_ip";s:3:"::1";s:13:"last_activity";s:10:"1456814919";s:14:"receive_emails";s:1:"1";s:4:"slug";s:5:"admin";s:19:"last_profile_update";s:1:"0";}s:14:"*subEntities";a:5:{s:8:"facebook";O:59:"AVCMS'Bundles'FacebookConnect'Model'FacebookConnectOverflow":2:{s:7:"*data";a:1:{s:2:"id";N;}s:14:"*subEntities";a:0:{}}s:8:"referral";O:46:"AVCMS'Bundles'Referrals'Model'ReferralOverflow":2:{s:7:"*data";a:1:{s:8:"referral";s:1:"0";}s:14:"*subEntities";a:0:{}}s:6:"points";O:41:"AVCMS'Bundles'Points'Model'PointsOverflow":2:{s:7:"*data";a:1:{s:6:"points";s:1:"0";}s:14:"*subEntities";a:0:{}}s:8:"messages";O:52:"AVCMS'Bundles'PrivateMessages'Model'MessagesOverflow":2:{s:7:"*data";a:1:{s:12:"total_unread";s:1:"0";}s:14:"*subEntities";a:0:{}}s:5:"group";O:35:"AVCMS'Bundles'Users'Model'UserGroup":2:{s:7:"*data";a:10:{s:2:"id";s:16:"ROLE_SUPER_ADMIN";s:4:"name";s:11:"Super Admin";s:18:"flood_control_time";s:1:"0";s:13:"admin_default";s:5:"allow";s:12:"perm_default";s:5:"allow";s:17:"moderator_default";s:5:"allow";s:16:"elevated_default";s:4:"deny";s:5:"owner";s:3:"app";s:18:"custom_permissions";s:1:"0";s:18:"admin_panel_access";s:1:"1";}s:14:"*subEntities";a:0:{}}}}i:1;b:1;i:2;a:1:{i:0;O:41:"Symfony'Component'Security'Core'Role'Role":1:{s:47:"Symfony'Component'Security'Core'Role'Rolerole";s:16:"ROLE_SUPER_ADMIN";}}i:3;a:0:{}}";}}"
}
}
["flashes"]=>
object(Symfony'Component'HttpFoundation'Session'Flash'FlashBag)#111 (3) {
["name":"Symfony'Component'HttpFoundation'Session'Flash'FlashBag":private]=>
string(7) "flashes"
["flashes":"Symfony'Component'HttpFoundation'Session'Flash'FlashBag":private]=>
&array(0) {
}
["storageKey":"Symfony'Component'HttpFoundation'Session'Flash'FlashBag":private]=>
string(12) "_sf2_flashes"
}
}
["started":protected]=>
bool(true)
["closed":protected]=>
bool(false)
["saveHandler":protected]=>
object(Symfony'Component'HttpFoundation'Session'Storage'Proxy'SessionHandlerProxy)#109 (4) {
["handler":protected]=>
object(SessionHandler)#110 (0) {
}
["wrapper":protected]=>
bool(true)
["active":protected]=>
bool(true)
["saveHandlerName":protected]=>
string(5) "files"
}
["metadataBag":protected]=>
object(Symfony'Component'HttpFoundation'Session'Storage'MetadataBag)#108 (5) {
["name":"Symfony'Component'HttpFoundation'Session'Storage'MetadataBag":private]=>
string(10) "__metadata"
["storageKey":"Symfony'Component'HttpFoundation'Session'Storage'MetadataBag":private]=>
string(9) "_sf2_meta"
["meta":protected]=>
&array(3) {
["u"]=>
int(1456814934)
["c"]=>
int(1456814130)
["l"]=>
string(1) "0"
}
["lastUsed":"Symfony'Component'HttpFoundation'Session'Storage'MetadataBag":private]=>
int(1456814931)
["updateThreshold":"Symfony'Component'HttpFoundation'Session'Storage'MetadataBag":private]=>
int(0)
}
}
["flashName":"Symfony'Component'HttpFoundation'Session'Session":private]=>
string(7) "flashes"
["attributeName":"Symfony'Component'HttpFoundation'Session'Session":private]=>
string(10) "attributes"
}
返回$userSee时出错
<b>Fatal error</b>: Call to a member function getToken() on string in <b>'GameModulesController.php</b> on line <b>157</b><br />
如果你的控制器扩展Symfony'Bundle'FrameworkBundle'Controller'Controller
,你可以调用方法getUser()
。
例如:
namespace AppBundle'Controller;
use Sensio'Bundle'FrameworkExtraBundle'Configuration'Route;
use Symfony'Bundle'FrameworkBundle'Controller'Controller;
/**
* Default controller
*
* @Route("/app")
*/
class DefaultController extends Controller
{
/**
* @Route("/", name="app_index")
*/
public function indexAction()
{
dump($this->getUser());
return $this->render('default/index.html.twig');
}
}
要在symfony2中检索用户信息,你有2种方式取决于你的symfony版本:
-
$user = $this->get('security.context')->getToken()->getUser();
警告:这是不推荐使用的方法,不要在Symfony 2.6及更高版本中使用它 -
$user = $this->get('security.token_storage')->getToken()->getUser();
:这是symfony的主要方法官方,未弃用