CodeIgniter 3.0で認証ライブラリIon Authを使う
CodeIgniterで現在最も使われていると思われる認証ライブラリIon Authをインストールします。
Ion Authのインストール
手動でのインストール
まず、CodeIgniter 3.0をインストールします。
そして、http://github.com/benedmunds/CodeIgniter-Ion-Auth/zipball/2 をダウンロードして展開します。
中身をCodeIgniterの対応するフォルダにコピーします。
Composerでのインストール
CodeIgniter 3.0をcodeigniter-composer-installerでインストールします。
$ composer create-project kenjis/codeigniter-composer-installer ci-ion-auth
Ion Authをインストールします。
$ cd ci-ion-auth
$ php bin/install.php ion-auth 2
ファイル名の修正
CodeIgniter 3.0の規約に合わせてクラスファイルのファイル名の先頭を大文字にします。
application/controllers/auth.php -> application/controllers/Auth.php
application/models/ion_auth_model.php -> application/models/Ion_auth_model.php
テーブルの作成
まず、CodeIgniterのデータベース接続設定を済ませてください。
それから、application/sql/ion_auth.sql
でMySQLにIon Auth用のテーブルを作成します。
そのままでもいいのですが、わかりやすいようにテーブル名に接頭辞ia_
を追加することにします。
--- a/application/sql/ion_auth.sql
+++ b/application/sql/ion_auth.sql
@@ -1,10 +1,10 @@
-DROP TABLE IF EXISTS `groups`;
+DROP TABLE IF EXISTS `ia_groups`;
#
# Table structure for table 'groups'
#
-CREATE TABLE `groups` (
+CREATE TABLE `ia_groups` (
`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(20) NOT NULL,
`description` varchar(100) NOT NULL,
@@ -15,19 +15,19 @@ CREATE TABLE `groups` (
# Dumping data for table 'groups'
#
-INSERT INTO `groups` (`id`, `name`, `description`) VALUES
+INSERT INTO `ia_groups` (`id`, `name`, `description`) VALUES
(1,'admin','Administrator'),
(2,'members','General User');
-DROP TABLE IF EXISTS `users`;
+DROP TABLE IF EXISTS `ia_users`;
#
# Table structure for table 'users'
#
-CREATE TABLE `users` (
+CREATE TABLE `ia_users` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`ip_address` varchar(15) NOT NULL,
`username` varchar(100) NOT NULL,
@@ -53,17 +53,17 @@ CREATE TABLE `users` (
# Dumping data for table 'users'
#
-INSERT INTO `users` (`id`, `ip_address`, `username`, `password`, `salt`, `email`, `activation_code`, `forgotten_password_code`, `created_on`, `last_login`, `active`, `first_name`, `last_name`, `company`, `phone`) VALUES
+INSERT INTO `ia_users` (`id`, `ip_address`, `username`, `password`, `salt`, `email`, `activation_code`, `forgotten_password_code`, `created_on`, `last_login`, `active`, `first_name`, `last_name`, `company`, `phone`) VALUES
('1','127.0.0.1','administrator','$2a$07$SeBknntpZror9uyftVopmu61qg0ms8Qv1yV6FG.kQOSM.9QhmTo36','','admin@admin.com','',NULL,'1268889823','1268889823','1', 'Admin','istrator','ADMIN','0');
-DROP TABLE IF EXISTS `users_groups`;
+DROP TABLE IF EXISTS `ia_users_groups`;
#
# Table structure for table 'users_groups'
#
-CREATE TABLE `users_groups` (
+CREATE TABLE `ia_users_groups` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`user_id` int(11) unsigned NOT NULL,
`group_id` mediumint(8) unsigned NOT NULL,
@@ -71,22 +71,22 @@ CREATE TABLE `users_groups` (
KEY `fk_users_groups_users1_idx` (`user_id`),
KEY `fk_users_groups_groups1_idx` (`group_id`),
CONSTRAINT `uc_users_groups` UNIQUE (`user_id`, `group_id`),
- CONSTRAINT `fk_users_groups_users1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE NO ACTION,
- CONSTRAINT `fk_users_groups_groups1` FOREIGN KEY (`group_id`) REFERENCES `groups` (`id`) ON DELETE CASCADE ON UPDATE NO ACTION
+ CONSTRAINT `fk_users_groups_users1` FOREIGN KEY (`user_id`) REFERENCES `ia_users` (`id`) ON DELETE CASCADE ON UPDATE NO ACTION,
+ CONSTRAINT `fk_users_groups_groups1` FOREIGN KEY (`group_id`) REFERENCES `ia_groups` (`id`) ON DELETE CASCADE ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-INSERT INTO `users_groups` (`id`, `user_id`, `group_id`) VALUES
+INSERT INTO `ia_users_groups` (`id`, `user_id`, `group_id`) VALUES
(1,1,1),
(2,1,2);
-DROP TABLE IF EXISTS `login_attempts`;
+DROP TABLE IF EXISTS `ia_login_attempts`;
#
# Table structure for table 'login_attempts'
#
-CREATE TABLE `login_attempts` (
+CREATE TABLE `ia_login_attempts` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`ip_address` varchar(15) NOT NULL,
`login` varchar(100) NOT NULL,
テーブル名を変更したので設定ファイルでも変更します。
--- a/application/config/ion_auth.php
+++ b/application/config/ion_auth.php
@@ -27,10 +27,10 @@
| -------------------------------------------------------------------------
| Database table names.
*/
-$config['tables']['users'] = 'users';
-$config['tables']['groups'] = 'groups';
-$config['tables']['users_groups'] = 'users_groups';
-$config['tables']['login_attempts'] = 'login_attempts';
+$config['tables']['users'] = 'ia_users';
+$config['tables']['groups'] = 'ia_groups';
+$config['tables']['users_groups'] = 'ia_users_groups';
+$config['tables']['login_attempts'] = 'ia_login_attempts';
/*
| Users table column and Group table column you want to join WITH.
これで準備完了です。
サンプルページ
サンプルページが付属していますので、ブラウザでアクセスしてみます。
/auth/login
にアクセスします。
以下のデフォルトの管理者でログインします。
ユーザ名:admin@admin.com
パスワード:password
ログインできると/
にリダイレクトされます。
/auth
にアクセスするとユーザの一覧が表示されます。
「Edit」を押すとユーザの情報を変更できます。
/auth/logout
にアクセスするとログアウトします。
ドキュメント
Ion Authのドキュメントは以下にあります(英語)。
関連
Date: 2015/06/08