Symfony3在身份验证后获取安全令牌

时间:2017-05-10 18:16:08

标签: php symfony symfony-3.1

我试图进行模态登录,然后用户输入正确的电子邮件&密码,我需要获取已登录用户的ID(当模态仍然打开,而不刷新页面)。来自数据库的users表的id。

通常,我使用以下行获取id:

$this->get('security.token_storage')->getToken()->getUser()->getId();

在模态情况下,我将表单发送到LoginController并在控制器内部:

/** @var AuthenticationUtils $authenticationUtils */
$authenticationUtils = $this->get('security.authentication_utils');
$error = $authenticationUtils->getLastAuthenticationError();

如果我输入错误的凭据,它可以正常工作,显示:凭据错误 如果我输入正确的凭据并且我执行var_dump($ error),我会得到NULL。

如果我这样做     $ error = $ authenticationUtils-> getLastAuthenticationError() - > getToken();

我收到错误,说我尝试在null对象上应用getToken。

如果我尝试这样做:

/** @var Accounts $account */
$account = $this->get('security.token_storage')->getToken()->getUser();
var_dump($account);

我得到了同样的错误。 如果我刷新页面,我就登录了。

我的范围是获取$ account对象。

如何在不刷新页面的情况下获取用户(实体)?在同一个控制器中,在$ authenticationUtils-> getLastAuthenticationError()之后?

谢谢,

2 个答案:

答案 0 :(得分:1)

  

我尝试进行模态登录,然后用户输入正确的信息   电子邮件&密码,我需要获取已登录用户的ID(而   模态仍然是打开的,没有刷新页面)。来自的身份证   来自数据库的用户表。

因此您需要通过AJAX登录。否则您的页面将被刷新。使用AJAX会有另一个问题。根据某些情况,您将在登录到另一个页面后重定向,这不是您想要的,因为您需要包含一些用户信息的响应。因此,您需要编写自己的身份验证处理程序。本文介绍了如何:http://www.webtipblog.com/adding-an-ajax-login-form-to-a-symfony-project/

答案 1 :(得分:0)

在symfony 3中:$id =$this->getUser()->getId()