CakePHP Ajax登录验证失败

时间:2011-09-02 20:55:51

标签: php ajax cakephp login

我目前正在为我的应用程序进行AJAX登录。在startpage的顶部有一个登录链接,当点击时会打开一个带有loginform的对话框,但我有几个问题:

  1. 当用户输入错误或没有数据时,不会显示错误
  2. 当我点击“登录”并且JsHelper更新了“模板”并再次单击“登录”时,他将我重定向到http://www.url.com/users/login(这不应该发生)
  3. 当我输入正确的logindata时,我已登录,但未进行重定向或显示消息。
  4. 我想我现在将发布所有需要的代码进行分析。

    UsersController ::登录()

        public function login() {
            if($this->RequestHandler->isAjax()) {
                $this->layout = 'ajax';
                $this->render('/elements/users/login');
            }
            return $this->Auth->login();
        }
    

    元素/ AJAX / login.ctp 这是登录对话框的模板。

    <?php echo $this->Session->flash(); ?>
    <fieldset>
      <?php
        echo $this->Session->flash();
        echo $this->Form->create(
              'User', 
              array(
                  'controller' => 'users', 
                  'action' => 'login'
              )
          );
        echo $this->Form->input(
            'email',
            array(
                'label' => 'E-Mail',
                'style' => 'width: 270px;'
            )
        );
        echo $this->Form->input(
            'password',
            array(
                'style' => 'width: 270px;'
            )
        );
        echo $this->Js->submit(
            'Login', 
            array('url' => array(
                'controller' => 'users',
                'action' => 'login'
            ), 
            'update' => '#loginContainer')
        );
        echo $this->Form->end();
      ?>
    </fieldset>
    

    我认为它与UsersController :: login()有关,但我不知道在哪里搜索。也许你可以帮助我?谢谢:))

1 个答案:

答案 0 :(得分:1)

来自Auth :: login()上的book

  

需要注意的一点是,您必须在登录后手动重定向用户,因为未调用loginRedirect。   $ this-&gt; Auth-&gt;登录($ data)成功登录时返回1,失败时返回0

所以大致类似于:

if ($this->Auth->login() === 1) {
    $this->redirect('/');
} else {
    $this->set('status', 'Bad login details');
}

*彻底未经测试

与为处理该问题而编写的javascript连接。

相关问题