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

时间:2019-03-14 14:22:48

标签: symfony web symfony4

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

1 个答案:

答案 0 :(得分:4)

您可以使用user checker来完善它。

例如:

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);
    }
}

启用检查器:

security:
    firewalls:
        main:
            // skipped for brevity
            user_checker: App\Security\UserChecker