cakephp 3.2 $ this-> Auth-> redirectUrl()始终在生产服务器上返回“\” - Session

时间:2016-06-11 18:14:32

标签: session authentication cakephp-3.0 url-redirection production-environment

我创建的Cakephp 3 app具有登录功能。登录功能在我的本地计算机上完美运行。但是,在生产服务器上登录凭据时,它会将我重定向到“\”而不是我指定的URL。我相信它的会话问题。我的意思是由于某种原因会话在重定向行丢失。

守则:

AppController的初始化方法

public function initialize()
{
    parent::initialize();

    $this->loadComponent('RequestHandler');
    $this->loadComponent('Flash');
    $this->loadComponent('Auth',[
            'authenticate'=>[
                    'Form'=>[
                            'fields'=>[
                                    'username'=>'username',
                                    'password'=>'password'
                            ],
                            'finder' => 'auth',
                    ]
            ],
            'loginAction'=>[
                    'controller'=>'Users',
                    'action'=>'login'
            ],
            'loginRedirect' => [
                    'controller'=> 'Pages',
                    'action'=> 'dashboard'
            ],
    ]);
}

UserController.php:

class UsersController extends AppController {


public function initialize()
{
    parent::initialize();
}

public function login() {
    if ($this->request->is('post')) {
        $user=$this->Auth->identify();     
        if($user) {
            $this->Auth->setUser($user);
            return $this->redirect($this->Auth->redirectUrl());
        } else {
            $this->Flash->error(_('your username or password is incorrect, please try agian'), [
                'key' => 'falseSignIn']);
        }
    }
}
public function logout() {
    return $this->redirect($this->Auth->logout());
}

}

这是使用phpinfo(); 的会话信息 enter image description here

1 个答案:

答案 0 :(得分:0)

您需要创建一个隐藏的文本框,并为其分配$ this-> Auth-> redirectUrl()的值。然后,您可以从表单中检索文本框值,并将其作为参数传递给$ this-> redirect()。