什么是cakeHP2x中的AuthComponent::getModel()替代方案


What is AuthComponent::getModel() alternative in cakePHP2x?

我正在使用Remember Me组件。实际上,将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是在bootstrap中定义的,因此,它是有效的函数。

现在有一行:

$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模型。

我在同一个组件中遇到了同样的问题。

如何从CakePHP 2.0 FormAuthenticate对象中获取$settings数据

摘要:

使用$this->Auth->userModel获取模型。如果值为null,则默认为'User'