在 cakephp 上不使用$this->请求->数据进行身份验证登录


Auth login without use $this->request->data on cakephp

我想重现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";