メインメニュー
XAMPP アレンジ
IED
WSL2
-
道具箱
リポジトリ編
フレームワーク編
公開ソフトウェア
メタ
リンク
- PHP ライブラリ
- PHP 言語
apricot:usage:ja:middleware文書の過去の版を表示しています。
編集中
Apricot ミドルウェア
ミドルウェアの構成
本章ではミドルウェア基盤を作ります。ミドルウェアとはアクションを囲んでいる層のような存在で、ユーザからのリクエストは何層もあるミドルウェアを通って最終的にアクションにたどり着きそこでレスポンスが生成されますが、途中でリクエストが中断され、ミドルウェアがレスポンスを生成することもあります。これを図示すると以下のようになります。
ミドルウェア構造
上図のような処理のネスト構造を
パイプライン
(pipeline) と呼び、特に多層になったミドルウェア構造をミドルウェアパイプライン
と呼ぶ事にします。Apricotには以下のミドルウェアが実装されています。
- アクセスログ
- CSRF対策
- ユーザ認証
ミドルウェアパイプラインを含めたミドルウェアの仕組みはApricotのコアの機能として実装しますが、上記のような具体的なミドルウェアの実装はアプリ側で行います。
Middleware インターフェース
冒頭のミドルウェア構造の図から分かるように、ミドルウェアの役割は自分を処理の後に次のプロセッサーに制御を渡すことです。この時、プロセッサーにはミドルウェアとアクションの両方があるので、前出のInvoker インターフェースを使います。ミドルウェアは任意タイミングで Invokerを 使うことができるので、前処理、後処理またはその両方ができます。また、クライアントの要求を自分だけで消費して Invoker を使うことなく自分のレスポンスを返すことも可能です。
/apricot/core/Foundation/Middleware
- Middleware.php
<?php namespace Core\Foundation\Middleware; use Core\Foundation\Invoker; use Core\Foundation\Response; /** * Middleware Interface */ interface Middleware { /** * Process incoming requests and produces a response * @param Invoker $next Next invoker * @return \Core\Foundation\Response if return response, then don'true call next action */ public function process(Invoker $next) :Response; }
アクセスログ
TODO
認証
TODO
CSRF
TODO
apricot/usage/ja/middleware.1596425169.txt.gz · 最終更新: 2020/08/03 12:26 by tanaka
コメント