FuelPHPをやってみる (22) - 認証機能 (2) -

2012-11-29T00:00:00+00:00 FuelPHP PHP

前回で書いた通り、SimpleAuthパッケージを使って認証機能を組んでみる。まぁFuelPHP公式ドキュメント通りなので

テーブルを作る

CREATE TABLE IF NOT EXISTS `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(50) NOT NULL,
  `password` varchar(255) NOT NULL,
  `group` int(11) NOT NULL DEFAULT "1",
  `email` varchar(255) NOT NULL,
  `last_login` varchar(25) NOT NULL,
  `login_hash` varchar(255) NOT NULL,
  `profile_fields` text NOT NULL,
  `created` int(11) NOT NULL DEFAULT "0",
  PRIMARY KEY (`id`),
  UNIQUE KEY `username` (`username`,`email`)
);

普通にドキュメント書いてますけど。passwordはパスワードをBASE64でエンコードした値になる模様。まぁcreate_userとかでユーザー作るべきなんですが、今回そこら辺は省略しますんでoil consoleで

Auth::instance()->hash_password("パスワード")

で取得した値を設定しておく。fuel/packages/auth/config内のファイル(auth.phpとsimpleauth.php)をfuel/app/configにコピーしておく。で必要であればちょいちょい設定する

でデフォルトでは認証ドライバがSimpleAuthになってるので、それを拡張する事も可能なので自分で認証システムを作る事も可能な模様

fuel/app/classes/controller/home.php

<?phpa

class Controller_Home extends Controller {

    public function before() {
        $auth = Auth::instance();

        if (!$auth->check()) {
            return Response::redirect("/auth");
        }
    }

    public function get_index() {
        return Response::forge("hoge");
    }
}

な感じでログインしているかのチェックはAuthクラスのcheckメソッドで確認出来る模様。でログインしてないから/authにリダイレクトさせてログインしてからアクセスさせる

fuel/app/classes/controller/auth.php

<?php

class Controller_Auth extends Controller {

    public function get_index() {
        return View::forge("login");
    }

    public function post_login() {
        $auth = Auth::instance();
        $auth->login();

        Response::redirect("/");
    }
}

まぁざっくり書くとこんな感じかと。Authクラスのloginメソッドを使う事で入力パラメーターをチェックしてログイン処理を行なってくれる模様。ちなみにその際のフォームのパラメーター名はfuel/app/config/simpleauth.phpで設定出来る(デフォルトはusernameとpasswordな項目を持つフィールドが必要)

まぁざっくりとやりましたけど、 http://fuelphp.com/docs/packages/auth/intro.html を読むのが良いと思いますんで

FuelPHPをやってみる (23) - 認証機能 (3) 独自のAuthドライバを実装する - FuelPHPをやってみる (21) - 認証機能 (1) -