使用auth组件

时间:2016-01-19 04:27:09

标签: cakephp

我正在使用cakephp 2.7.8

表名 - 用户

中的

字段

ID 名称 电子邮件 密码

我正在尝试登录,如果登录成功,则会重定向到广告页面。

但我现在不知道为什么

表单提交后我的登录信息显示错误

用户名和密码无效。

但我的表包含确切的可用值。

plz帮我找出错误。

控制器文件名 - UsersController.php

<?php
class UsersController extends AppController {   

      public $helpers = array('Form', 'Html');
      public $components = array('Flash');

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

     public function login() {
       if ($this->request->is('post')) {
                //print_r($this->request->is('post'));
                //exit;
                if ($this->Auth->login()) {
                    return $this->redirect($this->Auth->redirect(array('controller' => 'Users', 'action' => 'add')));
                }
                $this->Flash->error(__('Invalid username or password, try again'));
            }
        }
}
?>

模型文件名 - User.php

<?php

class User extends AppModel {

public $validate = array('lname' => array('rule' => 'notEmpty'));

}
?>

login.ctp

<?php 
echo $this->form->create('User', array('action' => 'login'));
echo $this->form->input('email');
echo $this->form->input('password');
echo $this->form->end('login');
?>

Appcontroller.php

<?php
App::uses('Controller', 'Controller');

class AppController extends Controller {

     public $components = array(
        'Flash',
        'Auth' => array(
            'loginRedirect' => array(
                'controller' => 'Users',
                'action' => 'index'
            ),
            'logoutRedirect' => array(
                'controller' => 'Users',
                'action' => 'display',
                'home'
            )
        )
    );

    public function beforeFilter() {
        $this->Auth->allow('index', 'view','update','delete');
    }


}
?>

1 个答案:

答案 0 :(得分:0)

没有必要声明此行

mkdir hacker-scripts
cd hacker-scripts
git init .
git config core.sparseCheckout true
echo 'android-material-design-appcompat/' > .git/info/sparse-checkout
git remote add -f origin https://...
git pull origin master

因为您已经在AppController本身中声明了组件数组。 - &GT;&GT;

     public $components = array('Flash'); // in UsersController.php

此外,您可以稍微修改此登录部分。

   public $components = array(
    'Flash',
    'Auth' => array(
        'loginRedirect' => array(
            'controller' => 'Users',
            'action' => 'index'
        ),
        'logoutRedirect' => array(
            'controller' => 'Users',
            'action' => 'display',
            'home'
        )
    )
);

有时会导致会话和重定向Url出现问题。编写注销代码并尝试重新登录。它有时会起作用。

另外,尝试调试并编写:

   if ($this->Auth->login()) {
       return $this->redirect(array('controller' => 'Users', 'action' => 'index'));

         or 

        return $this->redirect($this->Auth->redirectUrl());
  }

如果用户已登录,则会返回已登录用户数据的数组。

和平!的xD