/var/www/vhosts/ihelp.ro/httpdocs/vendor/cakephp/authentication/docs/ja
NameSizeModeActions
authentication-component.rst49500644editdlrm
authenticators.rst176620644editdlrm
conf.py2610644editdlrm
contents.rst3100644editdlrm
identifiers.rst74090644editdlrm
identity-object.rst40480644editdlrm
index.rst76690644editdlrm
middleware.rst29700644editdlrm
migration-from-the-authcomponent.rst128900644editdlrm
password-hashers.rst35740644editdlrm
testing.rst17680644editdlrm
url-checkers.rst14030644editdlrm
view-helper.rst9340644editdlrm
Edit: /var/www/vhosts/ihelp.ro/httpdocs/vendor/cakephp/authentication/docs/ja/index.rst (7669B)
Quick Start ########### CakePHPから `composer `_ でプラグインをインストールします。 プロジェクトのルートディレクトリ( **composer.json** ファイルが置かれている場所です) .. code-block:: bash php composer.phar require "cakephp/authentication:^2.0" プロジェクトの ``src/Application.php`` に以下の文を追加してプラグインをロードしてください。 :: public function bootstrap(): void { parent::bootstrap(); $this->addPlugin('Authentication'); } はじめに =============== 認証プラグインは、ミドルウェアとしてアプリケーションと統合します。 `middleware `_ また、認証されていないアクセスをより簡単にするためのコンポーネントとして使用することもできます。 まずはミドルウェアを適用してみましょう。 **src/Application.php** に以下のクラスを追加します。 インポート:: use Authentication\AuthenticationService; use Authentication\AuthenticationServiceInterface; use Authentication\AuthenticationServiceProviderInterface; use Authentication\Identifier\IdentifierInterface; use Authentication\Middleware\AuthenticationMiddleware; use Cake\Http\MiddlewareQueue; use Psr\Http\Message\ServerRequestInterface; 次に、アプリケーションに実装されたインターフェースに ``AuthenticationProviderInterface`` を追加します。:: class Application extends BaseApplication implements AuthenticationServiceProviderInterface 次に、 ``middleware()`` メソッドに以下の `AuthenticationMiddleware` を追加します。:: $middleware->add(new AuthenticationMiddleware($this)); .. note:: 両方ある場合は ``AuthenticationMiddleware`` の前に ``AuthorizationMiddleware`` を追加するようにしてください。 リクエストの処理を開始すると、 ``AuthenticationMiddleware`` はフックメソッドを呼び出します。 このフックメソッドにより、アプリケーションが使用したい ``AuthenticationService`` を定義することができます。 以下のメソッドを **src/Application.php** に記述します。:: /** * サービスプロバイダのインスタンスを返します。 * * @param \Psr\Http\Message\ServerRequestInterface $request Request * @return \Authentication\AuthenticationServiceInterface */ public function getAuthenticationService(ServerRequestInterface $request): AuthenticationServiceInterface { $service = new AuthenticationService(); // 認証されていない場合にユーザーがどこにリダイレクトするかを定義します。 $service->setConfig([ 'unauthenticatedRedirect' => '/users/login', 'queryParam' => 'redirect', ]); $fields = [ IdentifierInterface::CREDENTIAL_USERNAME => 'email', IdentifierInterface::CREDENTIAL_PASSWORD => 'password' ]; // 認証者を読み込みます。セッションを優先してください。 $service->loadAuthenticator('Authentication.Session'); $service->loadAuthenticator('Authentication.Form', [ 'fields' => $fields, 'loginUrl' => '/users/login' ]); // 識別子を読み込みます。 $service->loadIdentifier('Authentication.Password', compact('fields')); return $service; } まず、ユーザーが認証されていない場合にどうするかを設定します。 次に、アプリケーションがユーザーを認証するための仕組みを定義する ``Session`` と ``Form`` :doc:`/authenticators` をアタッチします。 ``Session`` はセッション内のデータに基づいてユーザを識別し、 ``Form`` はログインフォームを ``loginUrl`` で扱うことを可能にします。 最後に、ログインしたユーザーを表す :doc:`identifier ` に変換するための :doc:`identity ` をアタッチします。 認証が確認できた場合、ミドルウェアは認証サービスを `属性 `_. としてリクエストオブジェクトに追加します。 次に、 ``AppController`` に :doc:`/authentication-component` を呼び出します。:: // in src/Controller/AppController.php public function initialize() { parent::initialize(); $this->loadComponent('Authentication.Authentication'); } デフォルトでコンポーネントは、 **全て** のアクションに認証済みのユーザーを必要とします。 特定のコントローラでこの動作を無効にするには、 ``allowUnauthenticated()`` を使用してください。:: // コントローラの beforeFilter か initialize で、 // ログインしている必要のないview()とindex()を作成します。 $this->Authentication->allowUnauthenticated(['view', 'index']); ログインアクションの構成 ======================================== アプリケーションにミドルウェアを適用したら、ユーザーがログインするための方法が必要になります。 基本的に次のように ``UsersController`` にloginアクションと追加します。:: public function login() { $result = $this->Authentication->getResult(); // ユーザーがログインしている場合は、そのユーザーを送り出してください。 if ($result->isValid()) { $target = $this->Authentication->getLoginRedirect() ?? '/home'; return $this->redirect($target); } if ($this->request->is('post')) { $this->Flash->error('ユーザー名とパスワードが無効です'); } } 前のセクションで述べたように、コントローラの ``beforeFilter()`` コールバックで ``login`` アクションにアクセスできるようにして、 認証されていないユーザがアクセスできるようにしてください。:: public function beforeFilter(\Cake\Event\EventInterface $event) { parent::beforeFilter($event); $this->Authentication->allowUnauthenticated(['login']); } シンプルなlogoutアクションの追加:: public function logout() { $this->Authentication->logout(); return $this->redirect(['controller' => 'Users', 'action' => 'login']); } ログインするためには、ユーザーはハッシュ化されたパスワードを持つ必要があります。以下のようなことができます。 ユーザーがエンティティを使用してパスワードを更新すると、自動的にパスワードをハッシュ化します。:: // in src/Model/Entity/User.php use Authentication\PasswordHasher\DefaultPasswordHasher; class User extends Entity { // ... other methods // Automatically hash passwords when they are changed. protected function _setPassword(string $password) { $hasher = new DefaultPasswordHasher(); return $hasher->hash($password); } } Further Reading =============== * :doc:`/authenticators` * :doc:`/identifiers` * :doc:`/password-hashers` * :doc:`/identity-object` * :doc:`/authentication-component` * :doc:`/migration-from-the-authcomponent` * :doc:`/url-checkers` * :doc:`/testing` * :doc:`/view-helper`