Cakephp で Auth を使用してログインできません。これと同様の投稿がstackoverflowにいくつかありますが、それらの回答は私にはうまくいかないようです。
同様の登録フォームを作成しましたが、これは Auth で機能しますが、ログイン $this->Auth->login(); で機能します。UsersController で false を返します。
Auth は正しい userModel を使用し、username フィールドは email に変更されます。(注:どこでもメールの代わりにユーザー名を使用すると、どちらも機能しません)。データベースには、電子メールとパスワードのフィールドを保持するテーブル user があります。パスワード フィールドは、AuthComponent::password() を使用してハッシュ/暗号化されます。
// AppController
class AppController extends Controller {
public $helpers = array('Html', 'Form');
public $components = array(
'Session',
'Auth');
public function beforeFilter() {
$this->Auth->userModel = 'User';
$this->Auth->fields = array('username' => 'email', 'password' => 'password');
$this->Auth->loginAction = array('controller' => 'users', 'action' => 'login');
$this->Auth->loginRedirect = array('controller' => 'users', 'action' => 'index');
}
}
// ユーザーコントローラー
class UsersController extends AppController{
var $name = 'Users';
var $helpers = array('Html', 'Form');
function beforeFilter()
{
parent::beforeFilter();
// tell Auth not to check authentication when doing the 'register' action
$this->Auth->allow('register');
}
function login(){
if (isset($this->data['User'])) {
$this->Auth->login();
debug('tried');
}
}
// login.ctp
<?php
echo $this->Form->create('User',array('action'=>'login'));
echo $this->Form->input('email');
echo $this->Form->input('password');
echo $this->Form->end('Login');
?>
// user.php
<?php
class User extends AppModel{
var $name = 'User';
}
?>
Cakephp を使用して数日しか経っていないため、おそらく簡単なエラーですが、現在数時間検索していますが、まだ見つかりません。