参考にした記事は以下です。本当にありがとうございます!
CakePHPの「ログイン機能の導入」以下です。
いろんなサイトを参考にしましたが、上のサイトが一番自分にとってはわかりやすくて、うまくいきました。
パスワードの暗号化など、本当に助かりました。
やりたかったのは、「admin」がついていたら、ログインしているかどうかを確認して、
してなかったらログイン画面に入り、ログインした人だけadminの領域を触れるというようなことです。とりあえず権限とかはなしで。
userテーブルは既にあります。中に「id,username,password」と、あとは「created,modified」などお決まりのカラム等を追加。
cakebakeでモデルやコントローラーやビューも基本的なものは作っちゃってます。
1)config/core.phpの「Configure::write(‘Routing.prefixes’, array(‘admin’));」のコメントを外す。
2)cake/lib/controller/app_controller.phpをコピーして、app/直下に入れる。
3)app_controller.phpに
public $components = array('Auth','Session'); function beforeFilter(){ //adminかどうか if (!empty($this->params['prefix']) && $this->params['prefix']=='admin' && !empty($this->params['admin'])) { $this->Auth->authError = 'このページへのアクセスは認証が必要です。'; $this->set('username', $this->Auth->user('username')); $this->layout = 'admin'; } else { // $this->layout='user'; $this->Auth->allow($this->params['action']); } }
を作成。
4)user_controller.phpに
var $components = array('Auth'); /* フィルター */ public function beforeFilter() { $this->Auth->loginError = 'ユーザー名もしくはパスワードが違います。'; $this->Auth->loginRedirect = 'admin/contents/add'; }
を追加
5)user_controller.phpに
/* ログイン */ public function login() { $this->set('title_for_layout', 'ログイン'); } public function admin_login() { $this->render('login'); } /* ログアウト */ public function logout() { $this->redirect($this->Auth->logout()); } public function admin_logout() { $this->render('logout'); }
を追加。
6)管理画面(admin)と公開画面のレイアウトを変えたいので、
view/layout/にadmin.ctpを追加。
user_controller.phpの
「function beforeFilter(){」の中に
$this->layout = 'admin';
を追加
です。
あとは、admin_addとかをそれぞれのコントローラーやビューに追加していきます。
コメントを残す