Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Symfony命令-令牌存储不包含身份验证令牌。一个可能的原因可能是没有为此URL配置防火墙_Symfony_Security_Command_Entitymanager_Grant - Fatal编程技术网

Symfony命令-令牌存储不包含身份验证令牌。一个可能的原因可能是没有为此URL配置防火墙

Symfony命令-令牌存储不包含身份验证令牌。一个可能的原因可能是没有为此URL配置防火墙,symfony,security,command,entitymanager,grant,Symfony,Security,Command,Entitymanager,Grant,我使用Symfony5创建了一个命令,用于执行我触发的特定任务: docker compose exec container bin/控制台应用程序:do smthg 现在,当这个任务被触发时,它将进入数据库并修改一个字段,这样就不会对这个实体的每个实例重复这个操作 但是我不能持久化/刷新对象原因: The token storage contains no authentication token. One possible reason may be that there is no fir

我使用
Symfony5
创建了一个命令,用于执行我触发的特定任务:

docker compose exec container bin/控制台应用程序:do smthg

现在,当这个任务被触发时,它将进入数据库并修改一个字段,这样就不会对这个实体的每个实例重复这个操作

但是我不能
持久化
/
刷新对象原因:

The token storage contains no authentication token. One possible reason may be that there is no firewall configured for this URL
我对此做了一些挖掘,这可能是因为a防火墙在启动此命令时使用了
isgrated()
方法

依赖项:

    protected static string $commandName = 'app:do-smthg';
    private EntityManagerInterface $em;

    public function __construct(
        EntityManagerInterface $em,
        string $name = 'app:send-sms'
    )
    {
        parent::__construct($name);
        $this->em = $em;
    }
实际方法:

    public function execute(InputInterface $input, OutputInterface $output)
    {
        $instance = $this->instanceRepository->findOneBy(['somefield' => somevalue]);

        if ($entity->getField() == false) {
            // I do something here 
          
            // then I set a field and persist 
            $instance->setField(true);
            $this->em->persist($instance);
            $this->em->flush();
        }

        return Command::SUCCESS;
    }
如果没有首先触发此错误消息的
persist()
flush()
方法,该命令工作正常

有人知道我如何在执行此命令时调用
isgrated()
方法绕过防火墙吗

或者是否已经存在任何其他类型的解决方法

编辑:


我的应用程序正在使用JWT

通常,防火墙和相关的安全功能只适用于HTTP请求。控制台命令本身没有用户和权限。因此,一个简单的实体更新显然是被授予的,这是令人费解的


正如我猜测的那样,我建议调查一些事件。他们可能正在检查权限。事实证明,我猜对了。我猜这个答案的“价值”在于,通常情况下,防火墙和相关的安全功能只适用于HTTP请求。控制台命令本身没有用户和权限。因此,一个简单的实体更新显然是被授予的,这是令人费解的


正如我猜测的那样,我建议调查一些事件。他们可能正在检查权限。事实证明,我猜对了。我猜这个答案的“价值”在于,通常会有比看上去更多的东西进入。

那么,为什么要将安全对象注入到命令中呢?防火墙可以处理HTTP请求。我从未见过它在控制台命令中发挥作用。我已经更新了这个问题。在这种情况下,除了试图从这一点上获得更多的洞察力之外,安全组件与rl无关。您直接执行这个控制台命令吗?过程中的任何地方都没有涉及任何web请求?也许您有一个正在检查权限的doctrine persist/flush事件侦听器?我在
preUpdate()/postUpdate()
上有一个此实体的侦听器,它触发了此问题,非常感谢!如果你想让它成为一个完整的答案,我会把它标记为解决它的人。那么你为什么要将安全对象注入到你的命令中?防火墙可以处理HTTP请求。我从未见过它在控制台命令中发挥作用。我已经更新了这个问题。在这种情况下,除了试图从这一点上获得更多的洞察力之外,安全组件与rl无关。您直接执行这个控制台命令吗?过程中的任何地方都没有涉及任何web请求?也许您有一个正在检查权限的doctrine persist/flush事件侦听器?我在
preUpdate()/postUpdate()
上有一个此实体的侦听器,它触发了此问题,非常感谢!如果你想让它成为一个完整的答案,我会在这里把它标记为解决它的人,我有$this->authorizationChecker->isgrated('something')在一个侦听器中。那不是个好主意。通过删除它解决了问题。同样,我在一个侦听器中有$this->authorizationChecker->isgrated('something')。那不是个好主意。通过移除它解决了问题。