多个登录表单提交到一个登录操作

问题描述:

我在我的(蛋糕)应用程序中有2个登录表单。一个在主页上(由页面控制器提供),另一个在我的用户控制器中。来自我的用户控制器的工作正常。但是,当我尝试从主页登录时,我得到一个空白页,我看到在萤火虫我有404。奇怪的是,会话设置好。多个登录表单提交到一个登录操作

这看上去好像是有事情做与$这个 - > 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

试试你的调试级别设置为3,然后编辑你的问题,包括从输出。 – 2010-07-21 20:11:06

+0

调试已经在3,但没有输出(或错误)。你想看见什么?调试($这个)? – tersmitten 2010-07-21 20:59:58

+0

检查主页登录表单生成的html中的表单动作。 – webbiedave 2010-07-21 21:28:32

乱投医我能想到的后,我最后的希望不使用(默认)页面控制器。所以我所做的就是将它复制到我的应用程序/控制器,并使它看起来像:

<?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-> Session或$ this-> Auth?

+0

嘿,我遇到了和你一样的问题。你有没有发现任何更好的修复? – AlexBrand 2011-04-10 03:41:49

当您设置$this->Auth->autoRedirect = false你需要在你的login()方法来手动重定向登录尝试后,f.ex. $this->redirect($this->referer());。我想,你已经有了空白页面,因为没有重定向或错误的重定向。那个空白页的网址是什么?

+0

空白页面的URL /网站/用户/登录,但我的行动里我有类似上面的重定向。 但奇怪的是,我放入login()的所有内容都没有执行(当从用户控制器外部请求时)。即使我把它放在开始...... – tersmitten 2010-07-22 08:31:42