Symfony 4:仅允许活动帐户登录

Hyp*_*ion 3 symfony web symfony4

因此,我使用的是symfony 4,并设法在用户的数据库表中添加了一个名为“有效”的字段,如果有效等于0,则不会激活该帐户,反之亦然。因此,我想做的是,只要帐户未处于活动状态的用户尝试登录,就会显示一条消息或警报,并告诉他该帐户当前处于非活动状态。当活动用户连接时没有任何问题。我在这里不使用FOSUserBundle。那我可以手动做吗?

emi*_*mix 5

您可以使用用户检查器来完成。

例如。:

namespace App\Security;

use App\Entity\User;
use Symfony\Component\Security\Core\Exception\CustomUserMessageAuthenticationException;
use Symfony\Component\Security\Core\User\UserCheckerInterface;
use Symfony\Component\Security\Core\User\UserInterface;

class UserChecker implements UserCheckerInterface
{
    public function checkPreAuth(UserInterface $user)
    {
        if (!$user instanceof User) {
            return;
        }

        if (!$user->isActive()) {
            throw new CustomUserMessageAuthenticationException(
                'Inactive account cannot log-in.'
            );
        }
    }

    public function checkPostAuth(UserInterface $user)
    {
        $this->checkPreAuth($user);
    }
}
Run Code Online (Sandbox Code Playgroud)

启用检查器:

security:
    firewalls:
        main:
            // skipped for brevity
            user_checker: App\Security\UserChecker
Run Code Online (Sandbox Code Playgroud)

  • 什么财产花花公子。在检查器中,您调用方法以验证用户是否可以登录。 (2认同)