PHP Matsuri 2011 テストワークショップ アクセス制御ライブラリ

本ライブラリは、アクセス制御のためのオブジェクトを提供します。下記のように、アクセスを許可したり拒否するためのルールを指定し、対象の評価を行うことができます。

<?php
use PHPMatsuri\AccessControl\AccessControl;
use PHPMatsuri\AccessControl\AccessState;

$denyAllow = AccessControl::denyAllow();
$denyAllow->deny('/^192\.168\.0\.1$/');
if ($denyAllow->evaluate('192.168.0.1') == AccessState::ALLOW) {
    // アクセス許可
    ...
} else {
    // アクセス拒否
    ...
}

評価プロセスは ApacheOrder ディレクティブ によるアクセス制御のように動作します。

仕様

DenyAllow オーダー

  • evaluate() メソッドによって 対象評価 が実行されます。
  • 評価正規表現 で記述された ルール によって行われます。
  • deny() メソッドに与えられた 拒否ルールallow() メソッドに与えられた 許可ルール の前に 評価 されます。
  • アクセスはデフォルトで 許可 されます。
  • deny() メソッドの 評価 によって 拒否 になるか allow() メソッドの 評価 によって 許可 になった 対象 はアクセスが 許可 されます。

AllowDeny オーダー

  • evaluate() メソッドによって 対象評価 が実行されます。
  • 評価正規表現 で記述された ルール によって行われます。
  • evaluate() メソッドによって 対象評価 が実行されます。
  • allow() メソッドに与えられた 許可ルールdeny() メソッドに与えられた 拒否ルール の前に 評価 されます。
  • アクセスはデフォルトで 拒否 されます。
  • allow() メソッドの 評価 によって 拒否 になるか deny() メソッドの評価によって 拒否 になった 対象 はアクセスが 拒否 されます。

テストリスト

DenyAllow オーダー

  • 拒否ルールにマッチせず、許可ルールにもマッチしない対象を許可する。
  • 拒否ルールにマッチし、許可ルールにマッチしない対象を拒否する。
  • 拒否ルールにマッチし、許可ルールにマッチする対象を許可する。
  • 拒否ルールにマッチせず、許可ルールにマッチする対象を許可する。

AllowDeny オーダー

  • 許可ルールにマッチせず、拒否ルールにもマッチしない対象を拒否する。
  • 許可ルールにマッチし、拒否ルールにマッチしない対象を許可する。
  • 許可ルールにマッチし、拒否ルールにマッチする対象を拒否する。
  • 許可ルールにマッチせず、拒否ルールにマッチする対象を拒否する。