###前提・実現したいこと
cakephpを勉強中のものです。本当に初歩なことだと思いますがご教示いただけましたら幸いです。
フォーム認証を作成しました。
AppController.phpのinitializeメソッド記述
php
1{ 2 parent::initialize(); 3 $this->loadComponent('Flash'); 4 //認証 5 $this->loadComponent('Auth',[ 6 'authenticate' => [ 7 'Form' => [ 8 'fields' => [ 9 'username' => 'email', 10 'password' => 'password' 11 ] 12 ] 13 ], 14 'loginAction' => [ 15 'controller' => 'Users', 16 'action' => 'login' 17 ] 18]); 19}
Usersコントローラーに、loginアクションを追加。
php
1/** 2 * ログインページ 3 * @return type 4 */ 5public function login() 6{ 7 if($this->request->is('post')){ 8 $user = $this->Auth->identify(); 9 if($user){ 10 $this->Auth->setUser($user); 11 return $this->redirect($this->Auth->redirectUrl()); 12 } 13 $this->Flash->error('ユーザー名かパスワードが間違い'); 14 } 15}
Template\Users\login.ctp
php
1<h1>Login</h1> 2<?= $this->Form->create() ?> 3<?= $this->Form->input('email') ?> 4<?= $this->Form->input('password') ?> 5<?= $this->Form->button('Login') ?> 6<?= $this->Form->end() ?>
これでサイト全体には問題なくログイン認証が成功できました。
###発生している問題・エラーメッセージ
AppController.phpのinitializeの記述ですが、AppController.phpに書いたことにより、全てのページにログイン認証がかかりました。
例えば、photosという階層直下にだけ認証が欲しい場合はどうしたら良いのかなと考えて、
PhotosController.phpにinitializeメソッドの記述を移動しました、そうしましたら/photos/のページにレンダリングをした際にログイン画面は表示はされましたが、ユーザー名とパスワード入力しましたら、
”$user = $this->Auth->identify();”がエラーですと表示されてしまいました。
※もちろんサイト全体認証をかけたときにはこのエラーはでませんでした。
initializeの記述をPhotosController.phpに移動したときに発生しました。
あともう一歩な気がしますが、どのように設定したら特定の階層だけ認証ができるようになるのでしょうか。
ご教示願います。
エラーメッセージ
###補足情報(言語/FW/ツール等のバージョンなど)
cakephp3系
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/07/23 04:59
2017/07/23 05:27