私は CakePHP を初めて使用し、そのドキュメントを読んで、簡単な認証の例に従っています。私はまた、私の問題に対する答えを広く検索しました (このサイトの回答を含む)。
私は CakePHP 2.0 を使用しており、UsersController のログイン関数は次のようになります。
function login() {
if ($this->request->is('post')) {
if ($this->Auth->login(/*$this->request->data*/)) {
$this->redirect($this->Auth->redirect());
}else {
$this->Session->setFlash(__('Invalid username or password, try again'));
}
}
}
私の AppController は次のようになります。
public $components = array(
'Session',
'Auth' => array(
'loginRedirect' => array('controller' => 'pages', 'action' => 'display'),
'logoutRedirect' => array('controller' => 'pages', 'action' => 'display')
)
);
public function beforeFilter() {
$this->Auth->loginAction = array('controller' => 'users', 'action' => 'login');
}
私のユーザーモデル:
class User extends AppModel {
public $name = "User";
}
そしてログインフォーム:
echo $this->Session->flash('auth');
echo $this->Form->create('User', array('action' => 'login'));
echo $this->Form->input('username');
echo $this->Form->input('password');
echo $this->Form->end('Login');
問題は、ユーザーがログインしないことです。パラメータとして $this->request->data なしで $this->Auth->login() が呼び出されると、セッションに何も書き込まれず、ページが更新されるだけです。 $this->request->data を指定すると機能し、資格情報がセッションに書き込まれ、正しくリダイレクトされます。ただし、データベースに存在しない場合でも、 $this->Auth->login($this->request->data) を使用して誰でも「ログイン」できることに気付きました。これに加えて、間違った資格情報を入力しても何も起こらず、フラッシュ メッセージは表示されません。
特別なことをしようとしているわけではありません。必要なのは、ユーザーをログインさせる機能だけです。ユーザー名とパスワードのフィールドを持つ単純なユーザーテーブルがあり、その例に従ってドキュメントを読みましたが、まだ何も試していません働きました。
回答に必要なすべての情報を提供していない場合は、申し訳ありません。どんな助けでも大歓迎です。