Ground Sunlight

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

ユーザ用ツール

サイト用ツール


apricot:usage:ja:middleware

差分

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

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

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
apricot:usage:ja:middleware [2020/08/24 11:51]
y2sunlight [CSRF対策]
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'' に登録します。
行 254: 行 256:
 ==== CSRF対策 ==== ==== CSRF対策 ====
  
-このミドルウェアの目的は、CSRF対策です。発行してるCSRFトークンの検証に失敗した場合は、''TokenMismatchException'' をスローして[[apricot:usage:ja:errors-logging#集約例外ハンドラー]]に処理を委ねます。+このミドルウェアの目的は、CSRF対策です。発行してるCSRFトークンの検証に失敗した場合は、''TokenMismatchException'' をスローして[[apricot:usage:ja:errors-logging#集約例外ハンドラー]]に処理を委ねます。 
 + 
 +CSR対策を望まないコントローラーについては、そのクラス名を ''$exclude'' に登録して下さい
  
 {{fa>folder-open-o}} ** /your-project/app/Middleware ** {{fa>folder-open-o}} ** /your-project/app/Middleware **
行 293: 行 297:
 </code> </code>
  
-''CsrfToken'' はApricotコアのクラスで次のメソッドを持ちます。+''CsrfToken'' はApricotコアのクラスで次の静的メソッドを持ちます。
  
 ^メソッド^機能^ ^メソッド^機能^
-|<nowiki>__</nowiki>construct(array $errors=null, string $name=self::DEFAULT_NAME)|エラーバの生成| +|generate()|ション内CSRFトークンが未生成の場合、それを生成してセッションに格納します。
-|count(string $name=null):int|エラー数の取得|+|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.1598237482.txt.gz · 最終更新: 2020/08/24 11:51 by y2sunlight