如何从CakePHP中的多个登录位置获取loginRedirect?
题
我正试图在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');
不隶属于 StackOverflow