このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
apricot:ext:user-auth [2020/05/25 09:18] y2sunlight [ユーザモデル ] |
apricot:ext:user-auth [2020/06/08 11:38] (現在) tanaka [AuthUserクラス] |
||
---|---|---|---|
行 1: | 行 1: | ||
- | > 編集中 | ||
- | |||
- | ----- | ||
- | |||
====== Apricot ユーザ認証 ====== | ====== Apricot ユーザ認証 ====== | ||
--- // | --- // | ||
行 54: | 行 50: | ||
以下に、Authenticatableインターフェースのコードを示します。 | 以下に、Authenticatableインターフェースのコードを示します。 | ||
- | {{fa> | + | {{fa> |
<code php Authenticatable.php> | <code php Authenticatable.php> | ||
<?php | <?php | ||
行 121: | 行 117: | ||
Authenticationクラスを以下に示します。 | Authenticationクラスを以下に示します。 | ||
- | {{fa> | + | {{fa> |
<code php Authentication.php> | <code php Authentication.php> | ||
<?php | <?php | ||
行 510: | 行 506: | ||
' | ' | ||
], | ], | ||
- | ] | + | ], |
], | ], | ||
]; | ]; | ||
行 534: | 行 530: | ||
以下で順に説明していきます。 | 以下で順に説明していきます。 | ||
- | \\ | ||
==== ユーザモデル ==== | ==== ユーザモデル ==== | ||
- | ユーザモデル( User )に[[# | + | ユーザモデル( User )に[[# |
- | + | ||
- | Authenticatableの実装は、AuthTraitを使用( '' | + | |
{{fa> | {{fa> | ||
行 570: | 行 563: | ||
==== AuthUserクラス ==== | ==== AuthUserクラス ==== | ||
- | AuthUserクラスは、コアの [[# | + | AuthUserクラスは、コアの [[# |
使用法: ** AuthUser:: | 使用法: ** AuthUser:: | ||
行 585: | 行 578: | ||
- | {{fa> | + | {{fa> |
- | <code php Authenticatable.php> | + | <code php AuthUser.php> |
<?php | <?php | ||
namespace App\Foundation\Security; | namespace App\Foundation\Security; | ||
行 614: | 行 607: | ||
protected static function createInstance() | protected static function createInstance() | ||
{ | { | ||
- | | + | return new Authentication(new User()); |
- | | + | |
} | } | ||
} | } | ||
</ | </ | ||
+ | |||
+ | * createInstance() では、ユーザモデル( User )を使って、Authenticationクラスのシングルトンを生成しています。 | ||
+ | |||
+ | === マルチ認証 === | ||
+ | |||
+ | 同様の方法で別のモデルを使用したAuthenticationクラスのシングルトンも同時に作る事ができます。例えば、Userとは別に、AdminUserクラスやApiUserクラスも認証したいなどの例には実際によく遭遇するかもしれません。このように、Apricotでは潜在的にマルチ認証を想定した実装に仕上げていますが、これはApricotの範囲を超えているので、これ以上は触れないことにします。 | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ==== クラスエイリアス ==== | ||
+ | |||
+ | AuthUserクラスを[[apricot: | ||
+ | |||
+ | {{fa> | ||
+ | <code php aliases.setup.php> | ||
+ | <?php | ||
+ | // | ||
+ | // ビューテンプレートで使うクラスエイリアスを登録 | ||
+ | // | ||
+ | return function(): | ||
+ | { | ||
+ | $aliases = | ||
+ | [ | ||
+ | /* Core */ | ||
+ | .... | ||
+ | |||
+ | /* App */ | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | ]; | ||
+ | |||
+ | .... | ||
+ | }; | ||
+ | </ | ||
+ | |||
+ | * ValidatorErrorBag の下に AuthUserのエイリアスを追加します。 | ||
\\ | \\ | ||