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