Ground Sunlight

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

ユーザ用ツール

サイト用ツール


apricot:ext:user-auth

差分

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

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

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
apricot:ext:user-auth [2020/05/25 09:01]
y2sunlight [Apricot ユーザ認証]
apricot:ext:user-auth [2020/06/08 11:38] (現在)
tanaka [AuthUserクラス]
行 1: 行 1:
-> 編集中 
- 
------ 
- 
 ====== Apricot ユーザ認証 ====== ====== Apricot ユーザ認証 ======
  --- //[[http://www.y2sunlight.com|y2sunlight]] 2020-05-15//  --- //[[http://www.y2sunlight.com|y2sunlight]] 2020-05-15//
行 31: 行 27:
  
  
-本章の目的は、これらのユーザ認証の基盤を作る事です。その着地点は、シングルトンで動作するユーザ認証クラス( AuthUser )を作る事です。+本章の目的は、これらのユーザ認証の基盤を作る事です。その着地点は、シングルトンで動作するユーザ認証クラス( AuthUser )の実装です。このクラス使って、基本認証またはセッション認証の機能を次章以降作って行きます。
  
  
行 38: 行 34:
 ===== コアのユーザ認証機能 ===== ===== コアのユーザ認証機能 =====
  
-Apricotのコアで提供するユーザ認証機能は、アプリケーションのモデルやデータベースに依存しない基本的なものだけです。その代わりに、アプリ側とのインターフェース(Authenticatable)を提供します。Authenticatable を使用することで、モデルやデータベースに依存しないユーザ認証機能を実装することができます。+Apricotのコアで提供するユーザ認証機能は、アプリケーションのモデルやデータベースに依存しない基本的なものだけです。その代わりに、アプリ側とのインターフェース(Authenticatable)を提供します。Authenticatable を使用することで、モデルやデータベースに依存しないユーザ認証機能の基盤を実装することができます。
  
 ==== Authenticatableインターフェース ==== ==== Authenticatableインターフェース ====
行 54: 行 50:
 以下に、Authenticatableインターフェースのコードを示します。 以下に、Authenticatableインターフェースのコードを示します。
  
-{{fa>folder-open-o}} ** /apricot/core/Security/ **+{{fa>folder-open-o}} ** /apricot/core/Foundation/Security **
 <code php Authenticatable.php> <code php Authenticatable.php>
 <?php <?php
行 121: 行 117:
 Authenticationクラスを以下に示します。 Authenticationクラスを以下に示します。
  
-{{fa>folder-open-o}} ** /apricot/core/Security/ **+{{fa>folder-open-o}} ** /apricot/core/Foundation/Security **
 <code php Authentication.php> <code php Authentication.php>
 <?php <?php
行 510: 行 506:
                 'remember' =>'remember_token',                 'remember' =>'remember_token',
             ],             ],
-        ]+        ],
     ],     ],
 ]; ];
行 534: 行 530:
 以下で順に説明していきます。 以下で順に説明していきます。
  
-\\ 
  
 ==== ユーザモデル ==== ==== ユーザモデル ====
 +
 +ユーザモデル( User )に[[#Authenticatableインターフェース|Authenticatableインターフェース]]を実装します。Authenticatableの実装は、AuthTraitを使用( ''use'' )するだけですが、[[#AuthTraitの設定|AuthTraitの設定]]が必要になるので忘れないで下さい。
 +
 +{{fa>folder-open-o}} ** /apricot/app/Model **
 +<code php User.php>
 +<?php
 +namespace App\Models;
 +
 +use App\Foundation\Model;
 +use ORM;
 +use Core\Foundation\Security\Authenticatable;
 +use App\Foundation\Security\AuthTrait;
 +
 +/**
 + * ユーザモデル
 + */
 +class User extends Model implements Authenticatable
 +{
 +    /**
 +     * Authenticatable User
 +     * Includeing default implementation of Authenticatable
 +     */
 +    use AuthTrait;
 +
 +    ...
 +}
 +</code>
  
 \\ \\
 ==== AuthUserクラス ==== ==== AuthUserクラス ====
  
-AuthUserクラスは、コアの [[#authenticationクラス|Authentication]] クラスをシングルトンにしたもので、Authenticationのメソッドが全て使用できます。AuthUserクラスは、ミドルウェアと認証コントローラによって使用されます。+AuthUserクラスは、コアの [[#authenticationクラス|Authentication]] クラスをシングルトンにしたもので、Authenticationのメソッドが全て使用できます。AuthUserクラスは、主にミドルウェアと認証コントローラによって使用されますが、getUser()メソッドは様々な所から呼び出される可能性があります。
  
 使用法: ** AuthUser::{メソッド} ** 使用法: ** AuthUser::{メソッド} **
行 556: 行 578:
  
  
-{{fa>folder-open-o}} ** /apricot/core/Security/ ** +{{fa>folder-open-o}} ** /apricot/core/Foundation/Security ** 
-<code php Authenticatable.php>+<code php AuthUser.php>
 <?php <?php
 namespace App\Foundation\Security; namespace App\Foundation\Security;
行 585: 行 607:
     protected static function createInstance()     protected static function createInstance()
     {     {
-        $user = new User(); +        return new Authentication(new User());
-        return new Authentication($user);+
     }     }
 } }
 </code> </code>
 +
 +  * createInstance() では、ユーザモデル( User )を使って、Authenticationクラスのシングルトンを生成しています。
 +
 +=== マルチ認証 ===
 +
 +同様の方法で別のモデルを使用したAuthenticationクラスのシングルトンも同時に作る事ができます。例えば、Userとは別に、AdminUserクラスやApiUserクラスも認証したいなどの例には実際によく遭遇するかもしれません。このように、Apricotでは潜在的にマルチ認証を想定した実装に仕上げていますが、これはApricotの範囲を超えているので、これ以上は触れないことにします。
 +
 +\\
 +
 +==== クラスエイリアス ====
 +
 +AuthUserクラスを[[apricot:app:top#クラスエイリアス|クラスエイリアス]]に追加します。
 +
 +{{fa>folder-open-o}} ** /apricot/config/setup **
 +<code php aliases.setup.php>
 +<?php
 +//-------------------------------------------------------------------
 +// ビューテンプレートで使うクラスエイリアスを登録
 +//-------------------------------------------------------------------
 +return function():bool
 +{
 +    $aliases =
 +    [
 +        /* Core */
 +        ....
 +
 +        /* App */
 +        'ViewHelper' => \App\Helpers\ViewHelper::class,
 +        'ValidatorErrorBag' => \App\Foundation\ValidatorErrorBag::class,
 +        'AuthUser' => \App\Foundation\Security\AuthUser::class,
 +    ];
 +
 +    ....
 +};
 +</code>
 +
 +  * ValidatorErrorBag の下に AuthUserのエイリアスを追加します。
  
 \\ \\
  
apricot/ext/user-auth.1590364893.txt.gz · 最終更新: 2020/05/25 09:01 by y2sunlight