Symfony禁止帐户刷新和注销,可在sql命令中使用,而不是通过控制器

时间:2019-02-18 12:22:06

标签: symfony

我有一个带有isBanned列(boolean)的表用户。

默认情况下,它等于零。

当我在MySQL中手动输入true时,它的工作原理是,在第一次刷新时我无法连接。

在我的管理面板中,我可以看到一个用户和一个带有复选框的禁令。

它可以正常工作,我的 isBanned 列中有一个 true(1),但是我并没有断开连接,我不明白为什么

我正在使用 Symfony 4.2.3

在我的代码下面:

用户

     /**
      * @ORM\Column(type="boolean", nullable=true)
      */
      private $isBanned = 0;


    *****Getter and Setter*********

    public function isEqualTo(UserInterface $user)
    {
    if (!$user instanceof User) {
        return false;
    }
    return $this->isBanned === $user->getIsBanned();
    }

UserChecker

 /**
 * Checks the user account before authentication.
 *
 * @param UserInterface $user
 */
public function checkPreAuth(UserInterface $user)
{
    if (!$user instanceof User) {
        return;
    }

    if ($user->getIsBanned(true)) {
        throw new CustomUserMessageAuthenticationException(
            'BANNED'
        );
    }
}

控制器

public function showUser(User $user, Request $request)
{
    if ($user->getIsBanned() === true){
        echo 'bann';
    }
    $form = $this->createForm(AdminUserType::class, $user);
    $form->handleRequest($request);

    if ($form->isSubmitted() && $form->isValid()) {
        $this->getDoctrine()->getManager()->flush();
        $this->addFlash('success', 'BAN !!!!!');
        return $this->redirectToRoute('admin_user_show', [
            'username'     => $user->getUsername(),
            ]);
    }
}

Security.yaml

pattern: ^/
        user_checker: App\Controller\Security\UserChecker
security:
        always_authenticate_before_granting: true

此选项不会更改任何内容:我收到以下错误

always_authenticate_before_granting: true

0 个答案:

没有答案