Ground Sunlight

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

ユーザ用ツール

サイト用ツール


apricot:usage:ja:authentication

差分

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

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

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
apricot:usage:ja:authentication [2020/09/08 20:01]
y2sunlight [ルーティング]
apricot:usage:ja:authentication [2020/09/08 21:28] (現在)
y2sunlight [AuthControllerクラス]
行 194: 行 194:
 セッション認証のミドルウェアは、''/App/Middleware/Auth/SessionAuth'' です。他のミドルウェアと同様に、[[apricot:usage:ja:middleware#middleware_インターフェース|middlewareインターフェース]]の process() メソッドを実装し、その中で認証処理を行っています。 セッション認証のミドルウェアは、''/App/Middleware/Auth/SessionAuth'' です。他のミドルウェアと同様に、[[apricot:usage:ja:middleware#middleware_インターフェース|middlewareインターフェース]]の process() メソッドを実装し、その中で認証処理を行っています。
  
-以下に、このミドルウェアがどのように[[#AuthUserクラス]]を使っているのかについて説明します。+以下に、''SessionAuth'' ミドルウェアがどのように[[#AuthUserクラス]]を使って認証処理を実行しているのかについて説明します。
  
 {{fa>folder-open-o}} ** /your-project/app/Middleware/Auth ** {{fa>folder-open-o}} ** /your-project/app/Middleware/Auth **
行 234: 行 234:
 </code> </code>
  
-  * $this<nowiki>->exclude</nowiki> 配列に含まれているコントローラは認証から除外します。(公開のWebAPIなど) +$this<nowiki>->exclude</nowiki> 配列に含まれているコントローラは認証から除外します。通常は、ここには認証コントローラ上例では ''AuthController'' )が含まれます。他には、公開のページやWebAPIなどが含まれます。 
-  ''AuthUser::verify()''既に認証されているかを調べ、認証されていれば次の処理に制御を渡します。 + 
-  * まだユーザ認証されていない場合は、ヘルパー関数 redirect() を呼び出してログインページ画面にリダイレクトします。+''AuthUser::verify()''ユーザが認証されているか否かを調べ、認証されていれば次の処理に制御を渡します。まだユーザ認証されていない場合は、ヘルパー関数 redirect() を呼び出してログインページ画面にリダイレクトします。 
 + 
 +ミドルウェアでは、認証のチェックに ''AuthUser::check()''ではなくて、''AuthUser::verify()'' を使用するのは、後者のメソッドがログインユーザ情報の更新を行うからです。これによって ''AuthUser'' は常に最新のログインユーザ情報を保持することができます。
  
 \\ \\
行 251: 行 253:
  
 ===== 認証コントローラ ===== ===== 認証コントローラ =====
 +
 +セッション認証を使用した場合の認証コントローラについて説明します。Airpcotのスケルトンでは、認証コントローラとして ''App\Controllers\AuthController'' を提供しています。
  
 ==== ルーティング ==== ==== ルーティング ====
  
-''AuthController'' の[[apricot:usage:ja:controller#ルーティング]]は以下のようになっています。+''AuthController'' の[[apricot:usage:ja:controller#ルーティング]]は以下のように定義されています。
  
 {{fa>folder-open-o}} ** /your-project/config ** {{fa>folder-open-o}} ** /your-project/config **
行 262: 行 266:
 $r->get ('/logout', 'AuthController@logout'); $r->get ('/logout', 'AuthController@logout');
 </code> </code>
 +
 +  * /login (GET) --- ログインページ表示
 +  * /login (POST) --- ログイン処理 ( ユーザ認証 )
 +  * /logout --- ログアウト処理
  
 \\ \\
行 269: 行 277:
 セッション認証ではログインページから入力されるユーザアカウントとパスワードでユーザを認証します。また、ログイン時に、ブラウザ終了後もログイン状態を保持するか否かのチェック( Remember-Me )を行うことができます。 セッション認証ではログインページから入力されるユーザアカウントとパスワードでユーザを認証します。また、ログイン時に、ブラウザ終了後もログイン状態を保持するか否かのチェック( Remember-Me )を行うことができます。
  
-これらの処理は、''App/Controllers/AuthController'' クラスによって実行されます。 +これらの処理は、''AuthController'' クラスによって実行されます。以下に、このクラスのアクションがどのように[[#AuthUserクラス]]を使ってどのように認証処理を実行しているのかについて説明します。
- +
-以下に、''AuthController'' クラスのアクションがどのように[[#AuthUserクラス]]を使っているのかについて説明します。+
  
 === showFormアクション === === showFormアクション ===
行 294: 行 300:
 </code> </code>
  
-> TODO:+''AuthUser::check()'' でユーザが認証されているか否かのチェックを行い、成功の場合は、ヘルパー関数 redirect() でトップ画面にリダイレクトします。 
 + 
 +一方、''AuthUser::check()''が失敗した場合は、''AuthUser::remember()'' で自動ログインを試みます。これが成功した場合は、トップ画面にリダイレクトします。 
 + 
 +ユーザセッションもなく、自動ログインにも失敗した場合、コントローラーはログインページをレンダリングします。 
 + 
 +\\
  
 === loginアクション === === loginアクション ===
行 316: 行 328:
  
 > TODO: > TODO:
 +
 +まず、Input::all()でログインページから入力変数を取得します。そして、それらの変数をパラメータにして ''AuthUser::authenticate()'' でユーザ認証を行います。認証に成功した場合、''AuthUser::getPathAfterLogin()'' でログイン後のに遷移するページのパスを取得して、そこにリダイレクトします。
 +
 +認証に失敗した場合は、withInputs()で入力変数を、withErrors()でバリデーションのエラーバッグを、それぞれのフラッシュ変数に保存し、ログインページにリダイレクトします。
 +
 +\\
  
 === logoutアクション === === logoutアクション ===
行 330: 行 348:
 </code> </code>
  
-> TODO:+''AuthUser::forget()'' で認証セッションを破棄し、ログインページにリダイレクトします。
  
 \\ \\
apricot/usage/ja/authentication.1599562864.txt.gz · 最終更新: 2020/09/08 20:01 by y2sunlight