我想在控制器中做类似的事情来记录用户:
$user = $this->get('security.context')->getToken()->getUser();
$user->logOut();
Run Code Online (Sandbox Code Playgroud) 我希望我的用户能够删除他们自己的用户帐户。我做了一个SecurityController有我的 3 个函数的地方login,logout和deleteUser. 当我删除数据库中的当前用户时,会出现此错误:
您不能从不包含标识符的 EntityUserProvider 刷新用户。用户对象必须使用由 Doctrine 映射的自己的标识符进行序列化。
当我删除另一个用户时,它可以正常工作,因为他没有连接。我是否必须序列化用户并通过服务传递它,注销用户然后在服务中将其删除?或者我可以清除控制器中的 PHP 会话,但我不知道如何使用symfony4我认为它自版本 4 以来发生了变化。
<?php
namespace App\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
use Symfony\Component\Security\Core\Authorization\AuthorizationChecker;
use App\Entity\User;
use App\Form\UserType;
class SecurityController extends Controller
{
/**
* @Route("/createAdmin", name="create_admin")
*/
public function createAdminUser(Request $request, UserPasswordEncoderInterface $passwordEncoder)
{
$usersRepo = $this->getDoctrine()->getRepository(User::class);
$uCount = $usersRepo->countAllUsers();
if ($uCount == 0)
{
$user = new User();
$form = $this->createForm(UserType::class, …Run Code Online (Sandbox Code Playgroud)