繁体   English   中英

Symfony检查用户是否已通过身份验证

[英]Symfony check if user is authenticated

在我的Symfony项目中,我在User实体中使用UserInterface处理身份验证。 我还使用EquatableInterface检查用户登录时是否更改了电子邮件。

public function isEqualTo(UserInterface $user)
{
    if (!$user instanceof Account) {
        return false;
    }
    if ($this->email !== $user->getEmail()) {
        return false;
    }
    return true;
}

一切正常,但是当我在数据库中更改用户的电子邮件时,我并未注销,只是未通过身份验证,如以下屏幕截图所示。

https://s15.postimg.org/6md5htszf/22781921b8.png

因此,我想知道如何验证用户是否通过了控制器? isEqualTo返回false时,如何强制用户注销?

我找到了解决方案,如果其他人遇到相同的问题,我想分享它。

要检查是否用户进行身份验证,我们需要TokenInterface这是由执行TokenStorage 然后,我们只需要调用isAuthenticated()方法。

$tokenInterface = $this->get('security.token_storage')->getToken();
$isAuthenticated = $tokenInterface->isAuthenticated()

快速方法:请参见link上 Symfony\\Bundle\\FrameworkBundle\\Controller中的getUser方法。 如果您在服务中的某处需要此行为,请使用security.token_storage服务作为依赖项。

尝试方法(类似于symfony):您需要使用Symfony Security 选民

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM