相关疑难解决方法(0)

Symfony2:如何在控制器中手动记录用户?

我想在控制器中做类似的事情来记录用户:

$user = $this->get('security.context')->getToken()->getUser();
$user->logOut();
Run Code Online (Sandbox Code Playgroud)

symfony

43
推荐指数
3
解决办法
4万
查看次数

Symfony 4 - 在连接时删除自己的用户帐户的良好做法

我希望我的用户能够删除他们自己的用户帐户。我做了一个SecurityController有我的 3 个函数的地方loginlogoutdeleteUser. 当我删除数据库中的当前用户时,会出现此错误:

您不能从不包含标识符的 EntityUserProvider 刷新用户。用户对象必须使用由 Doctrine 映射的自己的标识符进行序列化。

当我删除另一个用户时,它可以正常工作,因为他没有连接。我是否必须序列化用户并通过服务传递它,注销用户然后在服务中将其删除?或者我可以清除控制器中的 PHP 会话,但我不知道如何使用我认为它自版本 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)

session logout symfony symfony4

6
推荐指数
1
解决办法
5137
查看次数

标签 统计

symfony ×2

logout ×1

session ×1

symfony4 ×1