我正试图在CakePHP应用程序中根据自己的喜好进行身份验证并遇到麻烦。

我想让用户从主页或专用登录页面登录。我正在使用Auth组件来管理登录,现在登录本身正常工作。我将主页上的表单提交到/ Users / Login,它会将它们登录并创建会话。问题是它然后将用户重定向回主页。我宁愿他们重定向到loginRedirect中指定的位置。

如果我直接从/ users / login登录,它会转发到loginRedirect。我认为问题与将表单从一个页面发布到另一个页面而不是自身有关,auth会自动认为您想要返回上一页。

有什么想法吗?

有帮助吗?

解决方案

AppController中的

public function beforeFilter( )
{
    $this->Auth->autoRedirect   =   false;
}
在UsersController中

public function login( )
{
    if( $this->Auth->user( ) )
    {
        $this->redirect( array(
            'controller'    =>  'users' ,
            'action'    =>  'index' ,
        ));
    }
}

此外,如果您还没有将表单移动到元素中,那么您可以绝对确定两个登录视图之间的登录表单是相同的。

其他提示

是的auth有一个功能,它会在登录前将您重定向到您尝试访问的页面。如果设置登录重定向不起作用,您可以尝试将loginRedirect设置为false并执行手册($ this- >在UsersController :: login操作中重定向([..])。

您可以通过将$ autoRedirect设置为false并自行处理重定向来关闭$ autoRedirect。 AuthComponent的问题是,有太多的自动化,你无法真正控制,或者只能通过黑客攻击。

您的问题的一个解决方案是删除Session.Auth.redirect键,因此AuthComponent将始终使用$ loginRedirect URL:

$this->Session->del('Auth.redirect');
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top