我有一个带有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