我的(蛋糕)应用程序中有2个登录表单。一个在主页上(由页面控制器提供),一个在我的用户控制器中。我的用户控制器中的那个工作正常。但是当我尝试从主页登录时,我得到一个空白页面,我在firebug中看到我得到了404.奇怪的是会话设置正常。
看起来它与$ this-> Auth-> autoRedirect = false(在用户控制器beforeFilter()中设置)有关。可能是什么问题?
这是我的登录操作的样子:
function login()
{
/* Werkt nog niet vanuit `home login` */
if ($this->Auth->user())
{
if(!empty($this->data))
{
/* Update last login */
$this->User->id = $this->Auth->user('id');
$this->User->saveField('last_login', date('Y-m-d H:i:s'));
}
$this->redirect($this->Auth->redirect());
}
}
答案 0 :(得分:0)
设置$this->Auth->autoRedirect = false
后,需要在登录尝试后手动重定向login()方法,f.ex。 $this->redirect($this->referer());
。我想,由于没有重定向或错误的重定向,你有空白页面。该空白页面的网址是什么?
答案 1 :(得分:0)
在尝试了我能想到的一切之后,我最后的希望就是不使用(默认)页面控制器。所以我做的是将它复制到我的应用程序/控制器并使它看起来像:
<?php
class PagesController extends AppController
{
var $name = 'Pages';
var $uses = array();
var $__allowUnAuthorized = array('*');
var $__allowAuthorized = array();
function beforeFilter()
{
parent::beforeFilter();
$this->Auth->allow($this->__allowUnAuthorized);
}
function display()
{
// Same as default
}
}
我还将一些东西从我的user_controller移到我的app_controller:
<?php
class AppController extends Controller
{
var $name = 'App';
var $components = array('Auth', 'Security', 'Session');
var $helpers = array('Html', 'Form', 'Session');
function beforeFilter()
{
parent::beforeFilter();
/* Auth */
$this->Auth->autoRedirect = false;
$this->Auth->loginAction = array(
'controller' => 'users',
'action' => 'login'
);
$this->Auth->loginRedirect = array(
'controller' => 'users',
'action' => 'index'
);
$this->Auth->loginError = __(
'Ongeldige conbinatie van gebruikersnaam en wachtwoord', true
);
$this->Auth->authError = __(
'U bent niet bevoegd om deze pagina te bekijken' ,true
);
$this->Session->delete('Auth.redirect');
}
}
?>
现在一切正常!也许它与页面控制器无法访问$ this-&gt; Session或$ this-&gt; Auth?