0

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 を使用して数日しか経っていないため、おそらく簡単なエラーですが、現在数時間検索していますが、まだ見つかりません。

4

1 に答える 1

1

のような設定プロパティは、2.x では何の役$this->Auth->userModel$this->Auth->fieldsも立ちません。プロパティを使用$this->Auth->authenticateして、userModel およびフィールド オプションを指定する必要があります。詳細については、Auth 構成に関する2.x のマニュアルを参照してください。

于 2013-04-18T06:13:16.067 に答える