У меня есть промежуточное ПО, которое проверяет правильность подписи на токене JWT для запросов GET к частным маршрутам.В нем мне нужно указать свой секрет JWT, который хранится в файле settings.php по адресу ['settings']['jwt']['secret']
.Я попытался получить доступ к этому значению с помощью $this->settings->jwt->secret
и получил ошибку:
Используя $ this, когда не в контексте объекта
Я переключился на использование $app->settings->jwt->secret
и получилошибка
Uncaught InvalidArgumentException: секрет должен быть либо строкой, либо массивом пар "kid" => "secret"
middleware.php
$app->add(new \Tuupola\Middleware\JwtAuthentication([
"path" => "/api", /* or ["/api", "/admin"] */
"attribute" => "decoded_token_data",
"secret" => $this->settings->jwt->secret,
"algorithm" => ["HS256"],
"error" => function ($response, $arguments) {
$data["status"] = "error";
$data["message"] = $arguments["message"];
return $response
->withHeader("Content-Type", "application/json")
->write(json_encode($data, JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT));
}, ]));
settings.php
return [
'settings' => [
'displayErrorDetails' => true, // set to false in production
'addContentLengthHeader' => false, // Allow the web server to send the content-length header
// Renderer settings
'renderer' => [
'template_path' => __DIR__ . '/../templates/',
],
// Monolog settings
'logger' => [
'name' => 'slim-app',
'path' => isset($_ENV['docker']) ? 'php://stdout' : __DIR__ . '/../logs/app.log',
'level' => \Monolog\Logger::DEBUG,
],
// database connection details
"db" => [
"host" => "127.0.0.1",
"dbname" => "sity",
"user" => "root",
"pass" => "",
],
// jwt settings
"jwt" => [
'secret' => 'jwtsecret',
],
],
];
Как правильно получить доступ к этому значению (иличто-нибудь в settings
объекте?)