使用Auth组件重定向问题

时间:2011-12-17 20:20:52

标签: php cakephp

我的主屏幕上有以下位置的登录表格和注册按钮 -

http://localhost/myproject/user/login

当用户点击“注册”按钮时,页面将重定向到 -

http://localhost/myproject/user/register

我在页面顶部有登录表格,在底部有登记表格。现在当我填写登录表单并提交时,如果登录失败,用户将被重定向到

http://localhost/myproject/user/login

相反,我希望将用户重定向到

http://localhost/myproject/user/register

我该如何实现这种行为?

4 个答案:

答案 0 :(得分:0)

如果您添加代码示例,我们可以更好地为您提供帮助。

听起来你有两个问题之一:

  1. 您有表格或提交具有相同ID或名称的按钮。
  2. 您的表单发布到同一个地方。

答案 1 :(得分:0)

当登录失败时,你真的重定向到/ user / login吗?或者登录表单操作URL总是指向/ user / login页面,这意味着如果登录失败,您只需保留在此页面上,因为您在检查凭据时已经在其中?< / p>

如果我是对的,你可以通过在登录失败时检查/ user / login操作中的referer来获得你想要的东西,在这种情况下,如果referer是/ user / register,则重定向到/ user / register。 / p>

答案 2 :(得分:0)

在beforeFilter中关闭autoRedirect并手动重定向

function beforeFilter()
{
    parent::beforeFilter();
    $this->Auth->autoRedirect = false;
}

function login()
{
    if ($this->RequestHandler->isPost()
    {
        if ($this->Auth->user()
        {
            $this->redirect($this->Auth->redirect());
        }
        else
        {
            $this->redirect('/users/register');
        }
    }
    // ... 
}

答案 3 :(得分:0)

我会像你这样在你的Users_Controllers中做点什么......

注意:我没有尝试过,我不确定它是否有效...我可以在尝试之后重新发布...

首先,您需要将自动重定向设置为False

class UsersController extends AppController{
    //...
    function beforeFilter(){
         parent::beforeFilter();
         $this->Auth->autoRedirect = FALSE;
    }

    function login(){
        if( !(empty($this->data)) && $this->Auth->user() ){
            //...
        }else{
            //If useR didnt/cant login redirect to register
            $this->redirect(array('controller' => 'users', 'action' => 'register'));
            // Or if you have routes setup for /register
            $this->redirect('/register');
        }
    }

希望这会帮助你。如果不是,我会稍后尝试一些事情并重新发布     }