2015-03-03 147 views
1

我正在使用cakephp 2.6.1 我正在登录,但它说您无权访问该位置。 在UsersController $this->request->is('post')返回falsecakephp无法使用用户名和密码登录

AppConroller.php

var $scaffold; 
public $components = array(
    'Acl', 
    'Auth' => array(
     'authorize' => array(
      'Actions' => array('actionPath' => 'controllers') 
     ) 
    ), 
    'Session' 
); 
public $helpers = array('Html', 'Form', 'Session'); 

UsersController:

public $components = array('Paginator'); 

public function beforeFilter() { 
    parent::beforeFilter(); 
    $this->Auth->allow(); 
} 
    public function login() { 

     if ($this->request->is('post')) { 

      if ($this->Auth->login()) { 
       return $this->redirect($this->Auth->redirectUrl()); 
      } 
      $this->Session->setFlash(__('Your username or password was incorrect.')); 
     } 
    } 

user.php的:

public function parentNode() { 
    if (!$this->id && empty($this->data)) { 
     return null; 
    } 
    if (isset($this->data['User']['group_id'])) { 
     $groupId = $this->data['User']['group_id']; 
    } else { 
     $groupId = $this->field('group_id'); 
    } 
    if (!$groupId) { 
     return null; 
    } 
    return array('Group' => array('id' => $groupId)); 
} 

/* 
* bindNode() and $actAs changes will tell ACL to skip checking User Aro’s and to check only Group Aro’s. 
* 
*/ 

public function bindNode($user) { 
    return array('model' => 'Group', 'foreign_key' => $user['User']['group_id']); 
} 

public $actsAs = array('Acl' => array('type' => 'requester', 'enabled' => false)); 

Login.ctp:

<?php echo $this->Session->flash('auth'); ?> 
<?php echo $this->Form->create('User'); ?> 
    <fieldset> 
     <legend> 
      <?php echo __('Please enter your username and password'); ?> 
     </legend> 
     <?php echo $this->Form->input('username'); 
     echo $this->Form->input('password'); 
    ?> 
    </fieldset> 
<?php echo $this->Form->end(__('Login')); ?> 

回答

0

也许里面UserController的更改beforefilter这样的:

public function beforeFilter() { 
    parent::beforeFilter(); 
    $this->Auth->allow('login'); 
} 
0

您需要添加要允许到$这个 - > Auth->允许()参数beforeFilter回调函数的功能。

示例代码:

public function beforeFilter() { 
    parent::beforeFilter(); 
    $this->Auth->allow('login'); //function that you want to allow before authentication 
} 

希望这有助于。