認証のシステムを調査

COdeIgniterでは独自の認証システムがありません。その代り多くの認証クラスが、CodeIgniterのフォーラム、WIKIで登録されています。
今回は、その中の
redux_auth という認証クラスを解析していきます。
#自分の書いたAuthクラスよりきっといいだろうと思っているのは内緒。

まず、必要なファイルとしては、
redux_auth.php
ここに
class redux_auth extends redux_auth_db
が記述され
同じファイルにclass redux_auth_dbが記述されています。
必ずDBを使って認証をするということですね。
※このあたりは、PEAR::authとかだとDB以外の認証を選択できるようになってましたね。

では最初に。
class redux_auth_dbから
書かれているメソッドは

  • protected function _activate ($users_tbl, $code)
  • protected function _insert_new_password($users_tbl, $password, $question_id)
  • protected function _insert_forgotten_code($users_tbl, $key, $email)
  • protected function _check_forgotten_code($users_tbl, $email)
  • protected function _remove_forgotten_code($users_tbl, $key)
  • protected function _check_username ($users_tbl, $username)
  • protected function _check_email ($users_tbl, $email)
  • protected function _get_group ($groups_tbl, $users_tbl, $id)
  • protected function _select_question ($users_tbl, $questions_tbl, $forgotten_password_code)
  • protected function _select_answer ($users_tbl, $questions_tbl, $id)
  • protected function _login ($users_tbl, $banned_tbl, $email)

すべてredux_authクラスから使われることが前提かな。

次に
redux_authクラス

  • function __construct()
  • public function register ($username, $password, $email, $question, $answer)
  • public function login ($email, $password)
  • public function logged_in ()
  • public function logout ()
  • public function activate ($activation_code)
  • public function change_password($old_password, $new_password) #未実装みたい Ver1.4.1
  • public function forgotten_begin ($email)
  • public function forgotten_process($key)
  • public function forgotten_end ($answer)
  • public function get_group($id)
  • public function check_username($username)
  • public function check_email($email)

とあります。

英語が苦手な自分としては、、、まあ、なんとなーく意味が分かるかな。^^;

まず、認証クラスが認証用DBのクラスを継承しています。
認証用DBのクラスはすべて認証クラスから呼び出されることを想定しています。メソッド名も
_からすべて始まってますし。

登録は、$username、$password、$email、$question、$answerが必須。
これに関しては、まあ一般的なサイトの登録内容でしょう。
しかし、ログインにはemailとパスワードでおこなっていますので、usernameの使い方としては、ログイン用IDというわけではないですね。

ここで意味が分からないものがいくつか^^;

banned_id
reason
この部分がいまいちわからんな。
翻訳サイトで調べてみました。

  • Your Account has been banned for the following reason
  • あなたのAccountは以下の理由で禁止されました。

ふむ。何かの理由によってアカウントが停止されているということですか。
ということは$result->reasonでbannedテーブルから情報をとっているので、
きっとアクセス禁止処置と、その理由が保存されるということかな。

も一つ。
Salt
これ、翻訳すると塩。。。。

ググる

  • salt 値
  • salt 値は、ディクショナリ攻撃への対策として、暗号化データまたはハッシュ データと組み合わせて使用されるランダム データです。通常、salt 値は、暗号化データまたはハッシュ データの前に置かれます。

とでてきました。

ふむ。

あす以降、メソッドをもっと読み説いて、実際にこれを活用するためのラッパーを作るかな。