管理画面(/manage/*) と その他(/manage/*以外) でセッションデータを保存するDBテーブルを分ける方法。
管理画面(/manage/*) はプラグイン(Plugin)機能を利用して作成。
config/bootstrap.php からプラグインを呼び出す。
Plugin::load('Manage', ['bootstrap' => true, 'routes' => true]);
この時に 'bootstrap' => true を忘れないように。
plugins/Manage/config/bootstrap.php ファイルを作成し、中身は
<?php use Cake\Core\Configure; if (!empty($_SERVER['REQUEST_URI']) && preg_match('/^\/manage*/', $_SERVER['REQUEST_URI'])) { Configure::write('Session.handler.model','ManageSessions'); Configure::write('Session.cookiePath','/manage/'); }
DBテーブルは分けるので
デフォルトの sessions と manage_sessions を用意する事を想定する。
CREATE TABLE `sessions` ( `id` char(40) CHARACTER SET ascii COLLATE ascii_bin NOT NULL, `created` datetime DEFAULT CURRENT_TIMESTAMP, -- optional, requires MySQL 5.6.5+ `modified` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, -- optional, requires MySQL 5.6.5+ `data` blob DEFAULT NULL, -- for PostgreSQL use bytea instead of blob `expires` int(10) unsigned DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE `manage_sessions` ( `id` char(40) CHARACTER SET ascii COLLATE ascii_bin NOT NULL, `created` datetime DEFAULT CURRENT_TIMESTAMP, -- optional, requires MySQL 5.6.5+ `modified` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, -- optional, requires MySQL 5.6.5+ `data` blob DEFAULT NULL, -- for PostgreSQL use bytea instead of blob `expires` int(10) unsigned DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
0 件のコメント:
コメントを投稿