cakephp Auth->登录无法正常工作

时间:2013-04-16 22:18:02

标签: cakephp-2.1

我从蛋糕书中得到了这个例子,它不起作用,很多人都是如此。 这里的问题是,无论我发送什么数据,都会通过登录。我的意思是我只是在我的数据库用户名中有一条记录:ric和密码:123。

如果我以asdasdasd / asdasdasdasd的形式提交它,就好像这是注册的一样。 我的模特:

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

    class User extends AppModel {
        public $name = 'Users';
        public $useTable = "rma_web_users";

        public $validate = array(
            'username' => array(
                'required' => array(
                    'rule' => array('notEmpty'),
                    'message' => 'A username is required'
                )
            ),
            'password' => array(
                'required' => array(
                    'rule' => array('notEmpty'),
                    'message' => 'A password is required'
                )
            )
        );
    }
?>

我的控制员:

<?php

class UsersController extends AppController {

    public $name = 'Users';
    public $uses = array('User');

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

    public function login() {
        if ($this->request->is('post')) {
            if ($this->Auth->login()) {
                $this->redirect($this->Auth->redirect());
            } else {
                $this->Session->setFlash(__('Invalid username or password, try again'));
            }
        }
    }

    public function logout() {
        $this->redirect($this->Auth->logout());
    }
}
?>

我的appController:

class AppController extends Controller {
    public $components = array(
        'Session',
        'Auth' => array(
            'loginRedirect' => array('controller' => 'home', 'action' => 'index'),
            'logoutRedirect' => array('controller' => 'home', 'action' => 'index')
        )
    );

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

和我的登录视图:

<div class="users_login">
    <p class='rma_login gray_label'>RMA Login System</p>
    <div class="form_container">
        <?php echo $this->Session->flash('auth'); ?>
        <?php echo $this->Form->create('User'); ?>
        <?php
            echo $this->Form->input('username',array(
                'label' => false,
                'type' => 'text',
                'value' =>'Email',
                'class' => 'entrada',
                'onFocus' => "if(this.value=='Email') this.value=''",
                'onBlur' => "if(this.value=='') this.value='Email'")
            );
            echo $this->Form->input('password',array(
                'label' => false,
                'type' => 'password',
                'class' => 'entrada')
            );
        ?>
        <?php
        $submit = array(
            'label' => 'Log in',
            'class' => array( 'boton_azul', 'login')
        );
        echo $this->Form->end($submit); ?>
    </div>
</div>

非常感谢你。

1 个答案:

答案 0 :(得分:1)

试试这个:

从模型

中删除这一行
App::uses('AuthComponent', 'Controller/Component');
public $name = 'Users';

从控制器中删除

public $name = 'Users';
public $uses = array('User');