anfly0/psr-15-github-auth
用于验证来自GitHub的入站webhook的PSR-15中间件
1.0.2
2019-08-15 12:09 UTC
Requires
- php: >=7.2
- psr/http-factory: ^1.0.1
- psr/http-server-middleware: ^1.0
- psr/log: ^1.1
Requires (Dev)
- monolog/monolog: ^1
- nyholm/psr7: ^1.1
- phpunit/phpunit: ^8
- squizlabs/php_codesniffer: ^3.4
README
简单的PSR-15中间件,用于验证GitHub webhook。
安装
$ composer require anfly0/psr-15-github-auth
示例
安装以下示例所需的依赖项
composer require anfly0/psr-15-github-auth composer require slim/slim ^4.0.0-beta composer require slim/psr7 composer require monolog/monolog
<?php /** * Minimal example using slim 4.0.0-beta and monolog */ use Psr\Http\Message\ResponseInterface as Response; use Psr\Http\Message\ServerRequestInterface as Request; use Slim\Factory\AppFactory; use Slim\Psr7\Factory\StreamFactory; use Monolog\Logger; use Monolog\Handler\StreamHandler; use Anfly0\Middleware\GitHub\Auth; require './vendor/autoload.php'; // Logger setup $logger = new Logger('example'); $logger->pushHandler(new StreamHandler('./example.log', Logger::INFO)); // Slim setup $app = AppFactory::create(); // Middleware setup $auth = new Auth('test', $app->getResponseFactory(), new StreamFactory()); $auth->setLogger($logger); // If the request has no body, set the body to the contents of php://input. $body = function (Request $request, $handler) { if ($request->getBody()->getSize() === 0) { $streamFactory = new StreamFactory(); $request = $request->withBody($streamFactory->createStreamFromFile('php://input')); } return $handler->handle($request); }; // Setup route and add middleware $app->post('/', function (Request $request, Response $response, $args) { $response->getBody()->write('OK'); return $response; }) ->addMiddleware($auth) ->add($body); $app->run();
常见问题解答
-
我期望认证成功,但认证失败了!?
- 确保在实例化中间件对象时向构造函数传递正确的密钥。
- 确保 $request->getBody() === file_get_content('php://input')。
- 即:传递给process方法的ServerRequest对象实际上包含请求体。
-
我如何使日志记录功能工作?
- 只需通过setLogger方法传递一个符合PSR-3的日志记录器即可。
许可协议
- MIT许可协议
- 版权所有 © Viktor Hellström 2019