在我的Symfony项目中,我在UserInterface
实体中使用User
来处理身份验证。我还使用EquatableInterface
来检查用户的电子邮件是否在他登录时发生了更改。
public function isEqualTo(UserInterface $user)
{
if (!$user instanceof Account) {
return false;
}
if ($this->email !== $user->getEmail()) {
return false;
}
return true;
}
一切正常,但是当我在数据库中更改用户的电子邮件时,我没有注销,只是未经过身份验证,如下面的屏幕截图所示。
所以我知道如果用户通过身份验证,我该如何检查控制器?当isEqualTo
返回false时,如何强制用户注销?
答案 0 :(得分:2)
我找到了解决方案,如果其他人遇到同样的问题我想分享。
要检查用户是否经过身份验证,我们需要由TokenInterface实施的TokenStorage。然后我们只需要调用isAuthenticated()方法。
$tokenInterface = $this->get('security.token_storage')->getToken();
$isAuthenticated = $tokenInterface->isAuthenticated()
答案 1 :(得分:0)