CakePHP2、Authコンポーネントでログインの条件を追加
cakephpの認証と言えばAuthだが、とても便利なものなのだが、usernameとpassword以外に追加の条件を追加したい、ということになると途端に面倒になる。
自分も過去以下のような記事を書いているが。。。
いざ実装してみるとうまくいかないことが多い。
例えば今回はユーザーがある場所に所属していて、場所Aにログインできるユーザー、場所Bにログインできるユーザー、どちらにもログインできるユーザーがあるようなケースでどうするか、というので悩んでいた。
なにかやり方があって追加の条件を追加できるのではないだろうかと。。。
だがしかし思ったのだが、別に認証は認証でusernameとpasswordだけで済まして、その後で追加の項目について自分で実装すればよいのでは?
追加の項目がだめだったらログアウトさせてしまえばよいのでは?
というのが私のたどり着いた結論である。
UsersController.php
if ($this->Auth->login()) {
// ここでログインしたユーザーIDと場所のIDを使ってさらに認証する
$options = array('conditions' => array(
'UsersPlace.user_id' => $this->Auth->user('id'),
'UsersPlace.place_id' => $this->request->data['User']['place_id'],
));
$count = $this->UsersPlace->find('count', $options);
if ($count > 0) {
// 認証OKなら場所IDをAuthのセッションに追加してリダイレクト
$user['User'] = $this->Auth->user();
$user['User']['place_id'] = $this->request->data['User']['place_id'];
$this->Session->write("Auth", $user);
$this->redirect($this->Auth->redirect());
} else {
// NGならログアウトして帰る
$this->Auth->logout();
$this->Flash->error(__('Invalid username or password, try again'));
}
} else {
$this->Flash->error(__('Invalid username or password, try again'));
}
考えすぎだった〜。
Author And Source
この問題について(CakePHP2、Authコンポーネントでログインの条件を追加), 我々は、より多くの情報をここで見つけました https://qiita.com/uedatakeshi/items/086ec8a42b86a59baf83著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .