4) 認証処理–Auth

会員制のWebアプリケーションを構築する場合、認証機能が要求されます。認証機能の最も簡単な実装方法は、アパッチWebサーバーのベーシック認証の活用です。しかし、アパッチWebサーバーのベーシック認証は、「ログイン画面の自由度がない」「ログアウト機能が搭載できない」など、柔軟な実装ができません。
この課題を解決するには、Authライブラリーを使用することで、柔軟な認証処理を簡単に実装することができます。

インターネットリサーチ・コンサルティング・企画、ウェブ翻訳から、Web制作、システム開発までオープンソース・ネットワークビジネスを提供

認証フロー

会員制のWebアプリケーション等を構築するには、以下の認証フローを実装します。ユーザーからアクセスがあると、まず、認証済みかチェックします。初回のアクセスでは認証が済んでいないので、ログインフォームが表示されます。ログインIDとパスワードを入力して、正しければ認証済みページが表示されます。ログインID、また、パスワードが間違っている場合、あるいは、認証済みページからログアウトした場合には、ログインフォームが再度表示されます。

ログインフォーム

まず、ログインフォームを関数にまとめて出力するようにプログラミングを行ないます。

<?php
function loginForm() {
  echo '<form method="post">';
  echo 'ユーザー名 <input type="text" name="username"><br>';    ---(1)
  echo 'パスワード<input type="password" name="password"><br>'; ---(2)
  echo '<input type="submit" value="ログイン">';
  echo '</form>';
}
echo loginForm();                                 ---(3)
?>


(1):ユーザー名のname属性は「username」にします
(2):パスワードのname属性は「password」にします
(3):ログインフォームを出力します

ブラウザーからこのファイルにアクセスすると、ログインフォームが表示されます。

認証処理と認証済みページ

認証処理を行うには、あらかじめ認証情報となるテキストファイルを作成します。この認証情報となるテキストファイルは、上記スクリプトと同じ場所にuser.txtファイルとして新規に作成し、「ユーザー名:パスワード」のフォーマットでユーザー情報を記述・追加します。

jfe-tec:.mSvr9lDzgi0Y


次に、認証処理と認証済みページを作成します。

<?php
function loginForm() {
  echo '<form method="post">';
  echo 'ユーザー名 <input type="text" name="username"><br>';
  echo 'パスワード<input type="password" name="password"><br>';
  echo '<input type="submit" value="ログイン">';
  echo '</form>';
}
// echo loginForm();         ---(1)

require_once 'Auth/Auth.php';   ---(2)
$a = new Auth(             ---(3)
   $storageDriver='File',      ---(4)
   $options='user.txt',       ---(5)
   $loginFunction='loginForm');  ---(6)
$a->start();               ---(7)

if ($a->checkAuth()) {        ---(8)
  echo '認証済みです<br>';    ---(9)
}
?>


(1):ログインフォームの出力をコメントアウトします
(2):Authライブラリーを読み込みます
(3):Authオブジェクトを生成します
(4):storageDriverパラメータでテキストファイルを指定します
(5):optionsパラメータでテキストファイル名を指定します
(6):loginFunctionパラメータでログインフォーム関数を指定します
(7):start ()メソッドで認証を開始します
(8):checkAuth ()メソッドで認証済みか判定します
(8):認証済みの場合の処理

ブラウザーからこのファイルにアクセスすると、認証済みページまでの処理が確認できます。

ログアウト処理
最後に、認証済みページからログアウトする処理を追加します。
<?php
function loginForm() {
  echo '<form method="post">';
  echo 'ユーザー名 <input type="text" name="username"><br>';
  echo 'パスワード<input type="password" name="password"><br>';
  echo '<input type="submit" value="ログイン">';
  echo '</form>';
}
// echo loginForm();

require_once 'Auth/Auth.php';
$a = new Auth(
   $storageDriver='File',
   $options='user.txt',
   $loginFunction='loginForm');
$a->start();

if ($_GET['action'] == "logout") {
  $a->logout();                       ---(1)
  $a->start();
}

if ($a->checkAuth()) {
  echo '認証済みです<br>';
  echo '<a href="?action=logout">ログアウト</a>'; ---(2)
}
?>


(1):GETパラメータ「action」がリクエストされたとき、logout()メソッドでログアウトを実行します
(2):「ログアウト」リンクにGETパラメータ「action」を設定します

ブラウザーからこのファイルにアクセスすると、認証済みページからログアウトして、ログインフォームが表示されることが確認できます。

今回は、テキストファイルによる認証機能を実現しましたが、Authライブラリーでは、データーベース・LDAP・SOAPを利用した認証機能を実装することも可能です。

次回は、RSSを簡単に取得できるXML_RSSパッケージをご紹介します。

関連キーワード
PHP、PEAR、Webアプリケーション、開発効率、プログラミング、Auth、認証、セキュリティ

コメントをお待ちしています

お名前:

メールアドレス:

コメント:

このエントリーのトラックバックURL

http://it.jfe-tec.jp/mt/mt-tb.cgi/57