php - Symfony 4.0 - 达到“512”的最大函数嵌套级别,中止
问题描述
我正在使用Symfony 4.0 构建一个 Web 应用程序。我已经使用 JWT 创建了一个身份验证系统,并且当数据库中的用户名和密码匹配时,我有一个返回令牌的端点。
我创建了一个函数来获取当前用户的用户详细信息,我创建了该函数以便我可以使用 JavaScript 在我的 Web 应用程序中构建标题(即根据登录用户权限的适当链接)。
但是,当我调用 /api/users/current 时,会出现以下错误:
已达到“512”的最大函数嵌套级别,正在中止!
端点似乎正在返回与用户相关的所有实体,但我不知道为什么会这样。
用户控制器:
<?php
namespace App\Controller\Api;
use App\Controller\BaseController;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Security\Core\User\UserInterface;
class UserController extends BaseController
{
/**
* @Route("/api/users/current")
* @Method("GET")
* @param UserInterface $user
* @return Response
*/
public function getCurrentUser(UserInterface $user){
$response = $this->createApiResponse($user, 200);
return $response;
}
}
基础控制器:
<?php
namespace App\Controller;
use JMS\Serializer\SerializationContext;
use JMS\Serializer\Serializer;
use JMS\Serializer\SerializerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
abstract class BaseController extends AbstractController
{
private $serializer;
public function __construct(SerializerInterface $serializer)
{
$this->serializer = $serializer;
}
/**
* @param $data
* @param int $statusCode
* @return Response
*/
protected function createApiResponse($data, $statusCode = 200)
{
$json = $this->serialize($data);
return new Response($json, $statusCode, array(
'Content-Type' => 'application/json'
));
}
/**
* @param Serializer $serializer
* @param $data
* @param string $format
* @return mixed
*/
protected function serialize($data, $format = 'json')
{
$context = new SerializationContext();
$context->setSerializeNull(true);
return $this->serializer->serialize($data, $format, $context);
}
}
解决方案
推荐阅读
- javascript - 将 HeadlessUI Popover 与 Vue.js 一起使用时出现“创建 vnode 时的 vnode 类型无效:未定义”错误
- java - 我想要修复错误 ERR_UNKNOWN_URL_SCHEME
- maven - GeoServer Maven 构建插件 AuthKey 身份验证
- json - Zapier Webhook 到 DocuSign 签署文档
- c# - 如何将 WS-security 添加到 .NET Web 服务?
- vue.js - 如何在 Vue/Nuxt 中使用微前端?
- python - 数据框如何用逗号分割列,但忽略双引号中的逗号
- reactjs - TypeError:无法读取 multer 网格中未定义的属性“单个”
- nuxt.js - 为什么 vuetify 中的嵌套 nuxt 链接不起作用?
- arrays - 在打字稿中通过订阅停止对象/变量的更改