1

私はRememberMeコンポーネントを使用しています。実際、CakePHP1.3アプリをCakePHP2xに移行します。私はRememberMeComponentであるコードのこの最後のピースで立ち往生しています。

クッキーを設定するためにここに表示されるスクリプトは次のとおりです。

function make( ) {
    $data = array(
        $this->ident_field => $this->_create_token( ),
        $this->token_field => $this->_create_token( ),
    );

    $this->Cookie->name = $this->cookie_name;
    $this->Cookie->time = $this->period;
    $this->Cookie->key = base64url_encode(implode('::', $data));
    $this->Cookie->secure = true;

    $this->Auth->getModel()->save(array($this->Auth->userModel => array_merge(array('id' => $this->Auth->user('id')), $data)), false);

}

とチェックします:

function check( ) {
    $cookie = $this->Cookie->read($this->cookie_name);

    if (empty($cookie)) {
        return false;
    }

    $data = explode('::', base64url_decode($cookie));

    $user = $this->Auth->getModel( )->find('first', array(
        'conditions' => array(
            $this->Auth->userModel.'.ident' => $data[0],
        ),
    ));

    if ( ! $user) {
        return false;
    }

関数base64url_encodeはブートストラップで定義されているため、有効な関数です。

今、行があります:

$this->Auth->getModel()->save(array($this->Auth->userModel => array_merge(array('id' => $this->Auth->user('id')), $data)), false);

それは私にエラーを与えています:

Error: Call to undefined method AuthComponent::getModel()   
File: /var/www/FlintStones/Controller/Component/RememberMeComponent.php

Auth Componentのドキュメントを確認しましたが、authのモデルを見つけることができるオプションがありませんでした。

前もって感謝します。

PS:自動ログインに直接移行することはできません(あなたがそれを念頭に置いているかもしれません)、またはあなたがクイックステップバイステップを参照することもできるならば、共有してください。私もそれを考えるかもしれませんが、これまでのところ、Authモデルを取得するだけです。

4

1 に答える 1

0

同じコンポーネントで同じ問題が発生しました。

CakePHP2.0FormAuthenticateオブジェクトから$settingsデータを取得する方法

概要:

$this->Auth->userModelモデルを取得するために使用します。値がnull、の場合、デフォルトで。になります'User'

于 2013-10-15T21:17:02.930 に答える