Ground Sunlight

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

ユーザ用ツール

サイト用ツール


apricot:usage:ja:authentication

差分

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

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

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
apricot:usage:ja:authentication [2020/09/08 20:09]
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() メソッドを実装し、その中で認証処理を行っています。
  
-以下に、''SessionAuth'' がどのように[[#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'' は常に最新のログインユーザ情報を保持することができます。
  
 \\ \\
行 264: 行 266:
 $r->get ('/logout', 'AuthController@logout'); $r->get ('/logout', 'AuthController@logout');
 </code> </code>
 +
 +  * /login (GET) --- ログインページ表示
 +  * /login (POST) --- ログイン処理 ( ユーザ認証 )
 +  * /logout --- ログアウト処理
  
 \\ \\
行 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.1599563349.txt.gz · 最終更新: 2020/09/08 20:09 by y2sunlight