1

我正在使用记住我的组件。实际上,将 CakePHP 1.3 应用程序迁移到 CakePHP 2x。我被这最后一段代码卡住了,它是 RememberMeComponent。

我在这里看到的设置 cookie 的脚本是:

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

I had the same issue in the same component.

How to get $settings data out of CakePHP 2.0 FormAuthenticate object

Summary:

Use $this->Auth->userModel to get the model. If the value is null, it will default to 'User'.

于 2013-10-15T21:17:02.930 回答