5

我正在尝试在 CakePHP 应用程序中按照我的喜好进行身份验证,但遇到了障碍。

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

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

有什么想法吗?

4

3 回答 3

8

在 AppController 中

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

在用户控制器中

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

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

于 2009-01-23T20:19:09.813 回答
0

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

于 2008-10-27T08:14:29.187 回答
0

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

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

$this->Session->del('Auth.redirect');
于 2008-12-17T09:50:15.160 回答