我正在使用Remember Me组件。实际上,将CakePHP 1.3应用程序迁移到CakePHP 2x。我坚持使用KeepMeComponent的最后一段代码。
我在这里看到设置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模型。
答案 0 :(得分:0)
我在同一个组件中遇到了同样的问题。
How to get $settings data out of CakePHP 2.0 FormAuthenticate object
要点:
使用$this->Auth->userModel
获取模型。如果值为null
,则默认为'User'
。