Mercure/Symfony: Authorization Error with JWT Key



我使用symfony二进制文件中的水星。通过

设置新项目后
symfony new mercure
cd mercure
symfony composer req make mercure annotations
symfony console make:controller
symfony server:start

我在新创建的控制器中编写了一些最小的代码:

<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentRoutingAnnotationRoute;
use SymfonyComponentMercureHubInterface;
use SymfonyComponentMercureUpdate;
class MainController extends AbstractController
{
/**
* @Route("/", name="main")
*/
public function index(HubInterface $hub): Response
{
$update = new Update(
'http://mercure/asdf',
json_encode(['message' => 'heyo']),
);
$hub->publish($update);
return $this->json([
'message' => 'Welcome to your new controller!',
'path' => 'src/Controller/MainController.php',
]);
}
}

然后,我从这里生成一个JWT密钥(链接自symfony文档),并在右下角输入!ChangeMe!,因为这是symfony二进制文件使用的密钥。然后在.env中设置JWT密钥:

MERCURE_URL=https://127.0.0.1:8000/.well-known/mercure
MERCURE_PUBLIC_URL=https://127.0.0.1:8000/.well-known/mercure
MERCURE_JWT_SECRET=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJtZXJjdXJlIjp7InB1Ymxpc2giOlsiKiJdfX0.obDjwCgqtPuIvwBlTxUEmibbBf0zypKCNzNKP7Op2UM

重新启动服务器并进入localhost:8000后,我得到Failed to send an update.HTTP/2 401 returned for "https://localhost:8000/.well-known/mercure".,这可能是因为密钥不能正常工作。服务器错误:MERCUR Topic selectors not matched, not provided or authorization error

通过设置MERCURE_JWT_SECRET="!ChangeMe!"(不加密),如果从服务器运行的机器访问该站点,而不是从同一网络中的其他机器(通过192.168.XXX.XXX:8000)访问该站点,则可以工作。

我做错了什么?

原来是我的操作系统配置有问题。把项目推到另一台机器上后,一切都很正常。

相关内容

  • 没有找到相关文章

最新更新