CakePHP Auth组件使用$this时未登录->;Auth->;login();


CakePHP Auth Component Not logging in when using $this->Auth->login();

我是cakeHP的新手,我已经阅读了他们的文档,并遵循他们的简单身份验证示例。我还到处搜索(包括这个网站上的答案),寻找我问题的答案。

我使用的是cakeHP 2.0,我的UsersController的登录功能如下:

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

我的AppController如下所示:

public $components = array(
                    'Session',
                    'Auth' => array(
                            'loginRedirect' => array('controller' => 'pages', 'action' => 'display'),
                            'logoutRedirect' => array('controller' => 'pages', 'action' => 'display')
                    )
        );
public function beforeFilter() {
    $this->Auth->loginAction = array('controller' => 'users', 'action' => 'login');
}

我的用户模型:

class User extends AppModel {
public $name = "User";
}

登录表单:

echo $this->Session->flash('auth');
echo $this->Form->create('User', array('action' => 'login'));
echo $this->Form->input('username');
echo $this->Form->input('password');
echo $this->Form->end('Login');

问题是它没有让用户登录。当在没有$this->request->data作为参数的情况下调用$this-->Auth->login()时,会话中不会写入任何内容,页面只会刷新。但是,当您提供$this->request->data时,它会工作,凭据会被写入会话,并且我会被正确重定向。然而,我注意到,您可以使用$this->Auth->login($this->request->data)"登录"任何人,即使他们不在数据库中。除此之外,如果我输入了错误的凭据,则不会发生任何事情,也不会显示任何闪烁消息。

我不想做任何特别的事情,我只想让用户登录。我有一个简单的用户表,里面有用户名和密码字段,我以他们为例,阅读了他们的文档,但我尝试过的仍然没有奏效。

如果我没有提供回复所需的所有信息,我深表歉意。非常感谢您的帮助。

我也有同样的经历。发生在我身上的事情是,有一次,我可以使用一些用户名和密码成功登录,但我的视图中从来没有任何代码显示我已经登录。我也很困惑,当我随后使用随机用户名和密码登录时,它仍然会给我一个成功登录的通知。

我想发生的事情是,如果你处于登录状态,那么无论你输入什么用户名和密码,$this->Auth->login()都会返回true。解决方案可能是在你的程序中以某种方式调用$this->Auth->logout(),或者清空你的cookie,这样程序就不会再指定你登录了。然后$this->Auth->login()将再次正常工作。

您在哪里定义了要使用的引擎?可能和http://ask.cakephp.org/questions/view/unable_to_login已经解决了如文档中所述设置发动机/适配器的问题。