クイックスタート

インストール

CakePHPプロジェクトのROOTディレクトリ(composer.jsonファイルがある場所)からcomposerでプラグインをインストールします。

php composer.phar require cakephp/authorization:^2.0

プロジェクトのsrc/Application.phpに次のステートメントを追加してプラグインをロードします:

$this->addPlugin('Authorization');

はじめに

Authorizationプラグインは、ミドルウェアレイヤーとしてアプリケーションに統合され、オプションでコンポーネントを統合して、認証のチェックを容易にします。まず、ミドルウェアを適用しましょう。src/Application.phpに、以下のようにクラスをインポートします。:

use Authorization\AuthorizationService;
use Authorization\AuthorizationServiceInterface;
use Authorization\AuthorizationServiceProviderInterface;
use Authorization\Middleware\AuthorizationMiddleware;
use Authorization\Policy\OrmResolver;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;

AuthorizationProviderInterfaceをアプリケーションの実装済みインターフェースに追加します。:

class Application extends BaseApplication implements AuthorizationServiceProviderInterface

次に、以下をmiddleware()メソッドに追加します。:

// Add authorization (after authentication if you are using that plugin too).
$middleware->add(new AuthorizationMiddleware($this));

AuthorizationMiddlewareは、リクエストの処理を開始すると、アプリケーションのフックメソッドを呼び出します。このフックメソッドを使用すると、アプリケーションで使用するAuthorizationServiceを定義できます。次のメソッドをsrc/Application.phpに追加します。:

public function getAuthorizationService(ServerRequestInterface $request): AuthorizationServiceInterface
{
    $resolver = new OrmResolver();

    return new AuthorizationService($resolver);
}

これにより、ORMエンティティをポリシークラスと照合する基本的なポリシーリゾルバーが構成されます。

次に、AuthorizationComponentAppControllerに追加します。src/Controller/AppController.phpで、次のコードをinitialize()メソッドに追加します:

$this->loadComponent('Authorization.Authorization');

AuthorizationComponentをロードすることで、アクションごとの認証をより簡単に確認できるようになります。たとえば、次のことができます。:

public function edit($id = null)
{
    $article = $this->Article->get($id);
    $this->Authorization->authorize($article, 'update');

    // Rest of action
}

authorize()を呼び出すことで、ポリシーを使用してアプリケーションのアクセス制御ルールを適用できます。リクエストに保存されているIDを使用して、どこでも権限を確認できます。