Every Qiita #19
のんびり独学初学者の毎日投稿チャレンジ 19日目
今回は・・・
cakephpでログインユーザ認証の備忘録です。
###ログイン認証の実装
公式チュートリアルでログイン周りを実装します。
UsersController.php
// ログイン認証不要アクションの設定
public function beforeFilter(\Cake\Event\EventInterface $event)
{
parent::beforeFilter($event);
$this->Authentication->addUnauthenticatedActions(['login','home', 'add','logout']);
}
public function login()
{
$this->request->allowMethod(['get', 'post']);
$result = $this->Authentication->getResult();
if($result->isValid()){
$redirect = $this->request->getQuery('redirect',[
'controller' => 'Users',
'action' => 'index',
]);
return $this->redirect($redirect);
}
if($this->request->is('post') && !$result->isValid()){
$this->Flash->error(__('メールアドレスかパスワードが違います'));
}
}
public function logout()
{
$result = $this->Authentication->getResult();
if($result->isValid()){
$this->Authentication->logout();
return $this->redirect(['controller' => 'Users', 'action' => 'home']);
}
return $this->redirect(['controller' => 'Users', 'action' => 'home']);
}
コントローラーはAuthenticationを継承しますので、ログイン不要アクションはbeforefilterに追加します。
$this->Authentication->getResult();
こちらでログイン認証を確認します。
###ログインしているか確認
$this->Authentication->getResult()->getData();
上記でログインユーザか認証してますので、こちらを条件分岐で使用。
$result = $this->Authentication->getResult();
if($result->isValid()){
$current_user = true;
}else{
$current_user = false;
}
$this->set(compact('current_user'));
$current_userのboolでログイン・非ログイン用でヘッダーの表示を変えていきます。