このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
apricot:ext:basic-auth [2020/05/24 14:42] y2sunlight [基本認証の設定] |
apricot:ext:basic-auth [2020/06/08 14:03] (現在) tanaka [テスト実行] |
||
---|---|---|---|
行 1: | 行 1: | ||
- | > 編集中 | ||
- | |||
- | ----- | ||
- | |||
====== Apricot 基本認証 ====== | ====== Apricot 基本認証 ====== | ||
--- // | --- // | ||
行 17: | 行 13: | ||
* [[apricot: | * [[apricot: | ||
* [[apricot: | * [[apricot: | ||
- | * [[Apricot: | + | * [[Apricot: |
* Apricot 基本認証 | * Apricot 基本認証 | ||
* [[apricot: | * [[apricot: | ||
行 23: | 行 19: | ||
* [[apricot: | * [[apricot: | ||
- | ミドルウェアを使ってユーザの基本認証を実装します。本章ではApricotのユーザ認証機能を使用しているので、まだお読みでない方は先に[[Apricot: | + | ミドルウェアを使ってユーザの基本認証を実装します。本章ではApricotのユーザ認証機能を使用しているので、まだお読みでない方は先に[[Apricot: |
基本認証は簡易的でログイン画面を作る必要もなく、少人数のユーザで使用する小規模なアプリ向けです。Webサーバの機能を使って基本認証を行うこともできますが、ログインユーザの管理が簡単にできるので、PHPによる基本認証機能の実装の方がお薦めです。尚、Apricotでは最終的に後述のセッション認証の方を採用します。 | 基本認証は簡易的でログイン画面を作る必要もなく、少人数のユーザで使用する小規模なアプリ向けです。Webサーバの機能を使って基本認証を行うこともできますが、ログインユーザの管理が簡単にできるので、PHPによる基本認証機能の実装の方がお薦めです。尚、Apricotでは最終的に後述のセッション認証の方を採用します。 | ||
行 41: | 行 37: | ||
use Core\Foundation\Invoker; | use Core\Foundation\Invoker; | ||
use Core\Foundation\Middleware\Middleware; | use Core\Foundation\Middleware\Middleware; | ||
- | use Core\Foundation\Security\UserAuth; | + | use App\Foundation\Security\AuthUser; |
/** | /** | ||
行 69: | 行 65: | ||
// Verify whether user is authenticated | // Verify whether user is authenticated | ||
- | if (UserAuth::verify()) | + | if (AuthUser::verify()) |
{ | { | ||
return $next-> | return $next-> | ||
行 77: | 行 73: | ||
if (array_key_exists(' | if (array_key_exists(' | ||
{ | { | ||
- | if (UserAuth:: | + | if (AuthUser:: |
{ | { | ||
return $next-> | return $next-> | ||
行 95: | 行 91: | ||
* $this< | * $this< | ||
- | * UserAuth::verify() で既に認証されているかを調べ、認証されていれば次の処理に制御を渡します。\\ \\ | + | * AuthUser::verify() で既に認証されているかを調べ、認証されていれば次の処理に制御を渡します。\\ \\ |
* まだユーザ認証されていない場合: | * まだユーザ認証されていない場合: | ||
- | * UserAuth:: | + | * AuthUser:: |
* 認証が成功した場合: | * 認証が成功した場合: | ||
* 次の処理に制御を渡します。 | * 次の処理に制御を渡します。 | ||
行 106: | 行 102: | ||
- $variables : テンプレート変数の連想配列\\ 上例では $messageをテンプレートに渡しています。 | - $variables : テンプレート変数の連想配列\\ 上例では $messageをテンプレートに渡しています。 | ||
* '' | * '' | ||
+ | |||
+ | AuthUser の使用方法については、[[apricot: | ||
+ | |||
\\ | \\ | ||
行 141: | 行 140: | ||
return [ | return [ | ||
' | ' | ||
- | ' | + | ' |
' | ' | ||
], | ], | ||
行 152: | 行 151: | ||
基本認証のミドルウェアをアプリケーションに設置します。 | 基本認証のミドルウェアをアプリケーションに設置します。 | ||
- | |||
- | > TODO: authの設定についても書く | ||
- | > authの詳細については、[[apricot: | ||
{{fa> | {{fa> | ||
行 163: | 行 159: | ||
' | ' | ||
\App\Middleware\AccessLog:: | \App\Middleware\AccessLog:: | ||
+ | \App\Middleware\VerifyCsrfToken:: | ||
\App\Middleware\Auth\BasicAuth:: | \App\Middleware\Auth\BasicAuth:: | ||
], | ], | ||
行 186: | 行 183: | ||
次のような基本認証画面が表示されます。\\ (この画面はブラウザが表示しているのでブラウザによって異なります) | 次のような基本認証画面が表示されます。\\ (この画面はブラウザが表示しているのでブラウザによって異なります) | ||
- | [{{apricot:app:app15.png? | + | [{{apricot:ext:ext04.png? |
■ 正しいユーザ名とパスワードを入力して[ログイン]ボタンを押すと、ホーム画面が画面が表示されます。 | ■ 正しいユーザ名とパスワードを入力して[ログイン]ボタンを押すと、ホーム画面が画面が表示されます。 | ||
- | [{{apricot:app:app16.png? | + | [{{apricot:ext:ext05.png? |
- | ■ 画像の下にユーザのアカウントが表示されています。\\ | + | |
■ 基本認証では、一旦認証されるとセッションが無くなるまでその状態が継続されます。ログアウトもできません。ログアウトしたい場合は、ブラウザを閉じて下さい。 | ■ 基本認証では、一旦認証されるとセッションが無くなるまでその状態が継続されます。ログアウトもできません。ログアウトしたい場合は、ブラウザを閉じて下さい。 | ||
基本認証画面で[キャンセル]ボタンを押した場合は以下のエラー画面が表示されます。 | 基本認証画面で[キャンセル]ボタンを押した場合は以下のエラー画面が表示されます。 | ||
- | [{{apricot:app:app17.png? | + | [{{apricot:ext:ext06.png? |
\\ | \\ | ||