これは単純な CakePHP ログイン関数です (CakePHP クックブックからの例):
public function login() {
if ($this->request->is('post')) {
if ($this->Auth->login()) {
return $this->redirect($this->Auth->redirectUrl());
} else {
$message = 'Username or password is incorrect';
$this->Session->setFlash(__($message), 'default', array(), 'auth');
}
}
}
このログイン機能のテスト中に、次のことがわかりました。
if ($this->Auth->login()) {
// ...
}
認証が以前に行われた場合でも、ユーザーはログインできます。たとえば、User1としてログインし、ログアウト関数を呼び出さずにUser2としてログインしようとすると、次のエラーが発生します。
Notice (8): Undefined index: User [APP/Controller/UsersController.php, line 83]
この場合、ログインフォームをユーザーから隠すことができます。それは正しい方法ですか?
更新: 次のコード スニペットについて教えてください。
public function login() {
if ($this->request->is('post')) {
if ($this->Auth->loggedIn()) {
$this->Auth->logout();
}
if ($this->Auth->login()) {
return $this->redirect($this->Auth->redirectUrl());
} else {
$message = 'Invalid login or password';
$this->Session->setFlash(__($message), 'default', array(), 'auth');
}
}
}