Slim 3 中间件设置参数未获取
Slim 3 middleware setting parameters not getting
settings.php 文件代码
return [
'settings' => [
'displayErrorDetails' => true, // set to false in production
'addContentLengthHeader' => false, // Allow the web server to send the content-length header
'encryption_key' => 'key1',
'jwt_secret' => 'secret1',
'db' => [
'servername' => 'localhost',
'username' => 'user',
'password' => 'pwd',
'dbname' => 'db',
],
],];
index.php 文件代码
$settings = require __DIR__ . '/../src/settings.php';
$app = new \Slim\App($settings);
$app->add(new \Slim\Middleware\JwtAuthentication([
"path" => "/",
"passthrough" => ["/login"],
"secret" => $this->jwt_secret,
"secure" => false,
"error" => function ($request, $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));
}]));
我收到错误消息:
不在
中的对象上下文中时使用$this
如何在中间件中获取设置属性?
在此上下文中 $this 应该是 Slim Container 对象。
设置存储为数组,可以像这样访问:
$app->add(function (Request $request, Response $response, $next) {
/* @var Container $this */
$settings = $this->get('settings');
$jwtSecret = $settings['jwt_secret'];
// Do something...
return $next($request, $response, $next);
});
settings.php 文件代码
return [
'settings' => [
'displayErrorDetails' => true, // set to false in production
'addContentLengthHeader' => false, // Allow the web server to send the content-length header
'encryption_key' => 'key1',
'jwt_secret' => 'secret1',
'db' => [
'servername' => 'localhost',
'username' => 'user',
'password' => 'pwd',
'dbname' => 'db',
],
],];
index.php 文件代码
$settings = require __DIR__ . '/../src/settings.php';
$app = new \Slim\App($settings);
$app->add(new \Slim\Middleware\JwtAuthentication([
"path" => "/",
"passthrough" => ["/login"],
"secret" => $this->jwt_secret,
"secure" => false,
"error" => function ($request, $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));
}]));
我收到错误消息: 不在
中的对象上下文中时使用$this如何在中间件中获取设置属性?
在此上下文中 $this 应该是 Slim Container 对象。
设置存储为数组,可以像这样访问:
$app->add(function (Request $request, Response $response, $next) {
/* @var Container $this */
$settings = $this->get('settings');
$jwtSecret = $settings['jwt_secret'];
// Do something...
return $next($request, $response, $next);
});