Ground Sunlight

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

ユーザ用ツール

サイト用ツール


apricot:ext:basic-auth

差分

このページの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 基本認証 ======
  --- //[[http://www.y2sunlight.com|y2sunlight]] 2020-05-15//  --- //[[http://www.y2sunlight.com|y2sunlight]] 2020-05-15//
行 17: 行 13:
     * [[apricot:ext:access-log|Apricot アクセスログ]]     * [[apricot:ext:access-log|Apricot アクセスログ]]
     * [[apricot:ext:csrf|Apricot CSRF対策]]     * [[apricot:ext:csrf|Apricot CSRF対策]]
-    * [[Apricot:ext:user-auth|ユーザ認証]]+    * [[Apricot:ext:user-auth|Apricot ユーザ認証]]
     * Apricot 基本認証     * Apricot 基本認証
     * [[apricot:ext:session-auth|Apricot セッション認証]]     * [[apricot:ext:session-auth|Apricot セッション認証]]
行 23: 行 19:
     * [[apricot:ext:di-container|Apricot DIコンテナー]]     * [[apricot:ext:di-container|Apricot DIコンテナー]]
  
-ミドルウェアを使ってユーザの基本認証を実装します。本章ではApricotのユーザ認証機能を使用しているので、まだお読みでない方は先に[[Apricot:ext:user-auth|そちら]]をご一読下さい。を使用しています+ミドルウェアを使ってユーザの基本認証を実装します。本章ではApricotのユーザ認証機能を使用しているので、まだお読みでない方は先に[[Apricot:ext:user-auth|そちら]]をご一読下さい。
  
 基本認証は簡易的でログイン画面を作る必要もなく、少人数のユーザで使用する小規模なアプリ向けです。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->invoke();             return $next->invoke();
行 77: 行 73:
         if (array_key_exists('PHP_AUTH_USER', $_SERVER) && array_key_exists('PHP_AUTH_PW',$_SERVER))         if (array_key_exists('PHP_AUTH_USER', $_SERVER) && array_key_exists('PHP_AUTH_PW',$_SERVER))
         {         {
-            if (UserAuth::authenticate($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']))+            if (AuthUser::authenticate($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']))
             {             {
                 return $next->invoke();                 return $next->invoke();
行 95: 行 91:
  
   * $this<nowiki>->exclude</nowiki> 配列に含まれているコントローラは認証から除外します。(公開のWebAPIなど)   * $this<nowiki>->exclude</nowiki> 配列に含まれているコントローラは認証から除外します。(公開のWebAPIなど)
-  * UserAuth::verify() で既に認証されているかを調べ、認証されていれば次の処理に制御を渡します。\\ \\ +  * AuthUser::verify() で既に認証されているかを調べ、認証されていれば次の処理に制御を渡します。\\ \\ 
   * まだユーザ認証されていない場合:   * まだユーザ認証されていない場合:
-    * UserAuth::authenticate() にユーザの入力したアカウント情報を渡し認証を行います。+    * AuthUser::authenticate() にユーザの入力したアカウント情報を渡し認証を行います。
     * 認証が成功した場合:     * 認証が成功した場合:
       * 次の処理に制御を渡します。       * 次の処理に制御を渡します。
行 106: 行 102:
         - $variables : テンプレート変数の連想配列\\ 上例では $messageをテンプレートに渡しています。         - $variables : テンプレート変数の連想配列\\ 上例では $messageをテンプレートに渡しています。
       * ''401 Unauthorized'' をヘッダーに追加してブラウザに基本認証を要求します。       * ''401 Unauthorized'' をヘッダーに追加してブラウザに基本認証を要求します。
 +
 +AuthUser の使用方法については、[[apricot:ext:user-auth#authuserクラス|こちら]]をご覧ください。
 +
 \\ \\
  
行 141: 行 140:
 return [ return [
     'basic'=>[     'basic'=>[
-        'msg_needed_login'=>'このページを見るにはログインが必要です'+        'msg_needed_login'=>'このページを見るにはログインが必要です',
         'back'=>'戻る',         'back'=>'戻る',
     ],     ],
行 152: 行 151:
  
 基本認証のミドルウェアをアプリケーションに設置します。 基本認証のミドルウェアをアプリケーションに設置します。
- 
-> TODO: authの設定についても書く 
-> authの詳細については、[[apricot:ext:user-auth#ユーザ認証の設定|ユーザ認証の設定]]を参照 
  
 {{fa>folder-open-o}} ** /apricot/config** {{fa>folder-open-o}} ** /apricot/config**
行 163: 行 159:
     'middleware' =>[     'middleware' =>[
         \App\Middleware\AccessLog::class,        /* Access log */         \App\Middleware\AccessLog::class,        /* Access log */
 +        \App\Middleware\VerifyCsrfToken::class,  /* Verify CSRF Token */
         \App\Middleware\Auth\BasicAuth::class,   /* Basic Auth. */         \App\Middleware\Auth\BasicAuth::class,   /* Basic Auth. */
     ],     ],
行 186: 行 183:
 次のような基本認証画面が表示されます。\\ (この画面はブラウザが表示しているのでブラウザによって異なります) 次のような基本認証画面が表示されます。\\ (この画面はブラウザが表示しているのでブラウザによって異なります)
  
-[{{apricot:app:app15.png?nolink}}]+[{{apricot:ext:ext04.png?nolink}}]
 ■ 正しいユーザ名とパスワードを入力して[ログイン]ボタンを押すと、ホーム画面が画面が表示されます。 ■ 正しいユーザ名とパスワードを入力して[ログイン]ボタンを押すと、ホーム画面が画面が表示されます。
  
-[{{apricot:app:app16.png?nolink}}] +[{{apricot:ext:ext05.png?nolink}}]
-■ 画像の下にユーザのアカウントが表示されています。\\ +
 ■ 基本認証では、一旦認証されるとセッションが無くなるまでその状態が継続されます。ログアウトもできません。ログアウトしたい場合は、ブラウザを閉じて下さい。 ■ 基本認証では、一旦認証されるとセッションが無くなるまでその状態が継続されます。ログアウトもできません。ログアウトしたい場合は、ブラウザを閉じて下さい。
  
 基本認証画面で[キャンセル]ボタンを押した場合は以下のエラー画面が表示されます。 基本認証画面で[キャンセル]ボタンを押した場合は以下のエラー画面が表示されます。
-[{{apricot:app:app17.png?nolink}}]+[{{apricot:ext:ext06.png?nolink}}]
  
 \\ \\
  
apricot/ext/basic-auth.1590298955.txt.gz · 最終更新: 2020/05/24 14:42 by y2sunlight