許可制御は、Webアプリケーション開発に不可欠な機能です。 CakePHPフレームワークの組み込み許可管理メカニズムは、開発者が許可制御の実装プロセスを簡素化するのに役立ちます。この記事では、CakePHPフレームワークを使用して許可制御を実装する方法を徐々に紹介し、関連するスキルをすばやく習得できるようにコード例を添付します。
まず、開発環境にCakePHPフレームワークをインストールする必要があります。 Composerを介してインストールできます。または、ソースコードは公式Webサイトからダウンロードできます。インストールが完了したら、新しいCakePHPアプリケーションを作成して、許可制御構成を開始します。
CakePHPでは、許可制御は主にAuthComponentコンポーネントに依存しています。このコンポーネントをアプリケーションコントローラーにロードすることにより、許可確認とID認証を簡単に設定できます。
// 存在するAppController.phpファイル内
public function initialize()
{
parent::initialize();
$this->loadComponent('Auth', [
'authorize' => 'Controller',
'authenticate' => [
'Form' => [
'fields' => [
'username' => 'email',
'password' => 'password'
]
]
],
'loginAction' => [
'controller' => 'Users',
'action' => 'login'
],
'unauthorizedRedirect' => $this->referer()
]);
}
コードでは、LoadComponentメソッドはAUTHコンポーネントをロードし、「Authorize」パラメーターは許可確認方法を定義し、コントローラーレベルに設定されます。 「認証」フォーム認証に必要なフィールドを構成し、「ログニクション」は、許可されていないアクセスが承認されていない場合にジャンプするようにログインページを指定し、「許可されていないLedirect」は、許可が不十分な場合にリダイレクトアドレスを定義します。
許可ルールは、コントローラーのISAUTHorizedメソッドによって定義されます。この方法は、現在のユーザーが要求された操作を実行する権利を持っているかどうかを決定します。
// 存在するUsersController.phpファイル内
public function isAuthorized($user)
{
$action = $this->request->getParam('action');
if (in_array($action, ['edit', 'delete'])) {
$userId = $this->request->getParam('pass.0');
if ($userId == $user['id']) {
return true;
}
}
return parent::isAuthorized($user);
}
ここで、最初に要求された操作名を取得します。許可を必要とする編集および削除操作については、操作パラメーターのユーザーIDと現在のログインしたユーザーIDをさらに比較します。試合が完了した場合は、それを承認します。それ以外の場合、デフォルトの許可判決のために、親クラスの方法が呼び出されます。
ユーザーエクスペリエンスを改善するために、ユーザーがログインしているかどうかに基づいて、ログインまたはログアウトリンクを動的に表示します。
// 存在する视图ファイル内
if ($this->Auth->user()) {
echo $this->Html->link('Logout', ['controller' => 'Users', 'action' => 'logout']);
} else {
echo $this->Html->link('Login', ['controller' => 'Users', 'action' => 'login']);
}
AUTHコンポーネントのユーザーメソッドを使用して、ユーザーのログインステータスを決定します。 「ログアウト」リンクが表示されると表示され、ログイン時に「ログイン」リンクが表示されます。これは、ユーザーが操作するのに便利です。
CakePHPフレームワークをインストールし、認証コンポーネントの構成、許可ルールの定義、およびビューに認証リンクを表示することにより、完全な許可制御システムをすばやく構築できます。上記のサンプルコードは、アプリケーションのセキュリティと柔軟性を確保するために、CakePHPベースの許可管理ソリューションを理解および実装するのに役立ちます。