0

私はしばらくこれと戦ってきました。私は認証を必要とする CakePHP 2.0 アプリケーションを持っています。それは別の言語でなければならないという事実のために、「ユーザー名」と「パスワード」の規則を使用して自動魔法の「ユーザー」から離れ、独自のデータベーステーブルを作成しました。

utilizatori('id', 'nume', 'parola')

私のAppControllerでは、次のように定義されています。正しく理解できれば、デフォルトの CakePHP の関連付けをオーバーライドして、新しい構造を使用する必要があります。

class AppController extends Controller {
    var $components = array('Session',
    'Auth' => array('Form' => array(
        'userModel' => 'Utilizator',
        'fields' => array('username' => 'nume', 'password' => 'parola'),
        'loginAction' => array('controller' => 'utilizatori', 'action' => 'login'),
        'loginRedirect' => array('controller' => 'categorii', 'action' => 'admin_index'))));

    function beforeFilter() { }
}

私のUtilizatoriControllerには、次のログイン機能があります。

function login() 
{
    $this->layout = 'admin'; 
    debug($this->data);
    debug(Security::hash($this->data['Utilizator']['parola']));
    debug($this->Auth->login());
    /*more here but don't think it's important*/

データ デバッグで期待値が表示されます。次のように仮定します。

**data['Utilizator']['nume']** = 'Cosmin'
**data['Utilizator']['parola']** = 'Cosmin'

パスワード ハッシュ デバッグは、データベースに手動で挿入した予想されるハッシュを生成しますが、ログイン関数はfalseを返します。

次に何をすべきかわからないので、フィードバックをいただければ幸いです。また、 $this->Auth->login()に送信されるものにアクセスする方法はありますか?

ありがとうございました

4

1 に答える 1

1

結局のところ、$ this-> Auth-> login()が失敗した理由は、AppController内でのAuthComponentの宣言でした。いくつかの調査と驚くほど小さいが役立つ投稿の後、CakePHP 2.0.4のAuthコンポーネントに異なるモデルを使用するにはどうすればよいですか?コードを確認しましたが、機能しているようです。

誰かがこれにぶつかった場合に備えて、ここにレビューを投稿します。

public $components = array(
    'Session',
    'Auth' => array(
        'authenticate' => array(
            'Form' => array(
                'userModel' => 'Utilizator',
                'fields' => array(
                    'username' => 'nume',
                    'password' => 'parola'
                )
            )
        ),
        'loginAction' => array('controller' => 'utilizatori', 'action' => 'login'), //Not related to the problem
        'loginRedirect' => array('controller' => 'utilizatori', 'action' => 'index'), //Not related to the problem
        'logoutRedirect' => array('controller' => 'utilizatori', 'action' => 'index') //Not related to the problem
    )
);
于 2012-04-04T19:36:02.063 に答える