我想重现cakephp登录
如果我这样做:
$this->request->data=array('User'=>array(
'username'=>'admin',
'password'=>'123456',
));
var_dump($this->Auth->login());
var_dump( $this->Auth->user());
它正在工作,我得到
boolean true
array (size=6)
'id' => string '2' (length=1)
'username' => string 'admin' (length=2)
等。。。
但是如果我不使用$this->request->data
,它就不起作用。根据文档: http://api.cakephp.org/2.1/class-AuthComponent.html#_login
混合$user可选空值 用户数据数组,或 null 以使用当前请求标识用户。
因此,如果我使用$user
它应该可以工作,但它没有:
$user=array('User'=>array(
'username'=>'admin',
'password'=>'123456',
));
var_dump($this->Auth->login($user));
var_dump( $this->Auth->user());
谢谢
如果你不想使用$this->request->data
那么你也不应该使用$this->Auth->login()
尝试使用这组代码,这应该可以解决您的问题:-
$options['conditions']['username'] = 'admin';
$options['conditions']['password'] = '12345'; //if using md5 then md5('12345')
$user = $this->User->find( 'first', $options );
if( isset( $user['User'] ) ) $this->Session->write( 'Auth', $user );
else echo "Invalid user";