CodeIgniterの学習 11 - FreakAuth_lightを使ってログイン認証を実現してみる - 導入前準備編 ベースのソース選定 1



(2010/7/5追記)
現在コチラの認証はつかってません。dx_auth とか EzAuthとか ion_authとかの検討を。
(2010/7/5追記おわり)

今日からログイン認証の導入に着手する。ボリュームが多いので数回に分ける。

3行で書くと、

  • FreakAuth_light - http://codeigniter.com/wiki/FreakAuth/ を改造して使ってみることにした。
  • あんまり日本語の情報がないみたいから、あえて踏み込んでみるのだ。(ただの調査不足かもしれん。)
  • 何となく動いた。まだ「動いた。やったー」の段階だけどこれからいろいろ調べていきたいなあ。

というお話。(今日は選定の辺り位まで書く。長いので、インストール記録とか残りは明日以降)


画面

残りの記述は退屈なだけなので、画面だけ先に幾つか載っけておく。(まだインストールした直後のデフォルトの画面、この後変えていくけど)



1)ログイン画面(ログインしていない状態からログイン画面にリダイレクトされた時の図)

キャプチャ付き。緑が眩しい。jquery(flash.js)が使われていて、もわっと赤色のアラートが消える。




2)パスワード忘れの時の画面

メールで案内する。




3)パスワード忘れの確認メール本文

パスワードを忘れたなら、このリンクをクリックしてね。ってやつ




4)リンクをクリックしてその後届くメール本文

3)のリンクで画面を開くと、id/passが記載されたメールが飛んでくる。
ここは、パスワードが記載された平文メールを飛ばすより、

  • いきなり5)の画面に飛ばしてこの画面上だけで新パスワードを入力させるように改造するか、
  • 期限付きの仮パスワードの発行にとどめて、強制的に次回ログイン時に新パスワードを入力させるように改造するか

のどちらかが良いと思うが、手間掛かるんだろな。どうしよっかな。




5)パスワードの変更画面




6)ユーザー登録画面

会員登録系に流用するためには、項目をガシガシ増やすしかないね。ベースとして使うにはこれ位素っ気ない方がいいか。




7)ユーザー登録完了メール本文

24時間以内にリンクをクリックして有効にしてね!ってやつ。




8)ユーザー管理画面(一覧)

アドミンが弄れる画面




9)ユーザー管理画面(個別編集)

アドミンが弄れる画面。メールアドレスとかパスワードとか権限の変更とか、
アカウントの剥奪とか(banされたらgo away man ! だって、表現が厳しいな)。

権限はデフォルトだと、superadmin admin user の3種類。これはconfigファイルで追加できる。




10)ログイン完了後

コントローラー側では、コンストラクタの部分で

<?php
  //上略
 // コンストラクタ
 function Tasklist()
 {
   parent :: Controller(); 
   //thanks to this line of code you can protect this controller
   //and reserve access to logged in users
   //ログイン認証、ログインしてなければログイン画面に飛ばされる
   $this->freakauth_light->check(); 
  //下略
 }

 ?>

みたいに $this->freakauth_light->check(); でログイン判定を呼び出し、ログインしてなかったらログイン画面に飛ばされる。


ビュー側では、

<p>ようこそ!<?=getUserName()?>ちゃん</p>

みたいに書いてユーザー情報を取り出せる。

ログアウトは <a href="/auth/logout.html">ログアウト</a> って貼っておけばいい。



ログイン認証についての前置き

ログイン系の処理って、大した事なさそうに見えて

  • ログイン
  • ログアウト
  • ユーザー登録 (+即時のカード与信なんかがあるとうぇー面倒くせーってなる。通信とかロギングとかテストとか。)
  • 権限チェック
  • ユーザー管理
  • ロボット拒否
  • 拒否ユーザーチェック
  • パスワード忘れ
  • 退会

とか諸々あって毎度毎度面倒なんで、(改造とか拡張が面倒で大嫌い)
考えるとすごく憂鬱になる。


CodeIgniterはデフォルトでは認証系のライブラリが準備されていないので、
自作するか又は先駆者が公開してくれているのを利用するかしかない。


当然ゼロから自作するとなると時間が掛かるので、今回は公開されているソースを使って+(実務ではこれを改造して)
使うことにする。ただソースは全部把握しとかないと。


まあ改造するっていっても、基本は項目増やすだけだけどね。
練習用アプリでは、増やさなくてもいいや。


なんとなく FreakAuthを使ってみたくなったので、これでいくことにする。
ちなみにFreakAuthは LGPLライセンスのようだ。


インストール

別のエントリでメモを書く予定。
ファイル数は多いけど別に難しくない。
installation_instructions.txt の通りにすればほぼうまくいくが、
がばっとファイル上書きはしない事。
俺はWinMergeでちまちまファイル比較していった。

DB2_Sessionをベースにしてセッション管理をしているのでこれだけは配布ソースから差し替えているが、
微妙にクラス名の大文字・小文字に違いがあって、DB_Session → Db_session に変更した位。)



残りはまた今度。