Ground Sunlight

Windowsで作る - PHPプログラミングの開発環境

ユーザ用ツール

サイト用ツール


apricot:usage:ja:middleware

差分

このページの2つのバージョン間の差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
apricot:usage:ja:middleware [2020/08/24 11:24]
y2sunlight [アクセスログ]
apricot:usage:ja:middleware [2020/09/03 13:46] (現在)
y2sunlight [Apricot ミドルウェア]
行 15: 行 15:
   * Apricot ミドルウェア   * Apricot ミドルウェア
   * [[apricot:usage:ja:controller|Apricot コントローラ]]   * [[apricot:usage:ja:controller|Apricot コントローラ]]
 +  * [[apricot:usage:ja:validation|Apricot バリデーション]]
   * [[apricot:usage:ja:provider|Apricot サービスプロバイダー]]   * [[apricot:usage:ja:provider|Apricot サービスプロバイダー]]
 +  * [[apricot:usage:ja:authentication|Apricot ユーザ認証]]
   * [[apricot:usage:ja:utility|Apricot ユーティリティ]]   * [[apricot:usage:ja:utility|Apricot ユーティリティ]]
  
行 84: 行 86:
 \\ \\
  
-===== Middleware の実装 =====+===== Middlewareの実装 =====
  
 Apricotのスケルトンで提供されているミドルウェアは、以下場所にの配置してあります。この配置は必須ではありません。適宜アプリケーションのルールで変更して下さい。 Apricotのスケルトンで提供されているミドルウェアは、以下場所にの配置してあります。この配置は必須ではありません。適宜アプリケーションのルールで変更して下さい。
行 128: 行 130:
 </code> </code>
  
-=== Middleware の設定 ===+=== Middlewareの設定 ===
  
 新しく作成したミドルウェアは、アプリケーションの設定ファイル ''/your-project/config/app.php'' に登録します。 新しく作成したミドルウェアは、アプリケーションの設定ファイル ''/your-project/config/app.php'' に登録します。
行 163: 行 165:
   * ユーザ認証(基本認証 及び セッション認証)   * ユーザ認証(基本認証 及び セッション認証)
  
-ここでは、ユーザ認証以外のミドルウェアについて説明します。ユーザ認証については後続の章をご覧ください。+ここでは、ユーザ認証以外のミドルウェアについて説明します。ユーザ認証については後続の章をご覧ください。これらのミドルウェアを適用したくない場合は、アプリケーションの設定ファイル( config/app.php )を修正して下さい。
  
 \\ \\
行 207: 行 209:
  
 ==== フォーム入力変換 ==== ==== フォーム入力変換 ====
 +
 +このミドルウェアの目的は、フォームの入力変数を変換することです。
 +
 +  * 入力値をトリミングします。
 +  * 入力値が空の場合、その値をnullにします。
 +
 +これらの変換を望まない変数については、そのキーを ''$exclude'' に登録して下さい。入力変数の変換を追加または変更するには、このミドルウェアを修正して下さい。
  
 {{fa>folder-open-o}} ** /your-project/app/Middleware ** {{fa>folder-open-o}} ** /your-project/app/Middleware **
行 245: 行 254:
 </code> </code>
  
-> TODO:+==== CSRF対策 ====
  
-\\+このミドルウェアの目的は、CSRF対策です。発行しているCSRFトークンの検証に失敗した場合は、''TokenMismatchException'' をスローして[[apricot:usage:ja:errors-logging#集約例外ハンドラー]]に処理を委ねます。
  
-==== CSRF対策 ====+CSR対策を望まないコントローラーについては、そのクラス名を ''$exclude'' に登録して下さい。
  
 {{fa>folder-open-o}} ** /your-project/app/Middleware ** {{fa>folder-open-o}} ** /your-project/app/Middleware **
行 288: 行 297:
 </code> </code>
  
-> TODO:+''CsrfToken'' はApricotコアのクラスで次の静的メソッドを持ちます。 
 + 
 +^メソッド^機能^ 
 +|generate()|セッション内のCSRFトークンが未生成の場合、それを生成してセッションに格納します。| 
 +|verify():bool|フォームの入力変数とセッションに格納されているCSRFトークンを比較して同じならtrueを返します。これはHTTPメソッドがPOSTの場合のみ有効で、GETの場合は常にtrueを返します。| 
 + 
 +フォーム内にCSRFトークンを入力変数として埋め込む方法については、「[[apricot:usage:ja:frontend#テンプレートの継承|フロントエンドのテンプレートの継承]]」のCSRF対策の項を参照して下さい。 
 + 
 +アプリケーション設定( [[apricot:usage:ja:config#appphp_ファイル|config/app.php]] )の ''csrftrue.disposable'' が true の場合、CSRFトークンは使い捨てで、''verify()'' の後で削除され次の ''generate()'' で再生成されます。これが false の場合は、セッション中の間CSRFトークンの値は不変です。
  
 \\ \\
  
apricot/usage/ja/middleware.1598235883.txt.gz · 最終更新: 2020/08/24 11:24 by y2sunlight