Cakephp前缀

时间:2017-01-23 06:56:56

标签: php session cakephp cakephp-3.0

我扼杀了一件简单的事情: 如何告诉Cake为不同的前缀(路由)使用不同的Session配置。

我有主域名www.domain.tdl,我不希望前缀couriers(www.domain.tdl / couriers)使用相同的会话配置来避免身份验证问题:主要域和前缀使用不同的身份验证配置。

因此,在我的App.php中,Session配置为:

   'Session' => [
        'defaults' => 'cake',
        'timeout' => 24 * 60, //in minutes,
        'cookie' => 'app_bo',
//        "cookiePath" => "/mrbo", (tried with or without)
        'ini' => [
            "session.name" => "MR_BO",
        ]
    ],

而且我以为我可以在前缀的AppController中更改配置: SRC /控制器/信使/ AppController.php

    Configure::write('Session', [
        'defaults' => 'cake',
        'timeout' => 24 * 60, //in minutes,
        'cookie' => 'app_courier',
        "cookiePath" => "/mrcourier",
        'ini' => [
            "session.name" => "MR_COURIER",
        ]
    ]);
    ini_set('session.cookie_name', 'app_courier');
    ini_set('session.cookie_path', '/mrcourier');
    ini_set('session.name', 'MR_COURIER');

仅使用Configure::write无效,这就是我添加ini_set的原因(似乎只更新了内部的CakePhp配置)。

通过这样做,它的工作而不起作用。实际上,我看到域名和前缀不会使用相同的内容,但是当我尝试登录前缀页面时,没有任何内容,它会重定向到自身。

我认为这是因为CakePHP在我的前缀AppController中设置之前内部使用了Session。

修改 这是Auth组件加载:(前缀的一个是退出相同,只有控制器模型/控制器更改)

 $this->loadComponent('Auth', [
            'authorize' => ['Controller'],
            'authenticate' => [
                'Custom' => [
                    'passwordHasher' => [
                        'className' => 'Legacy',
                    ],
                    'userModel' => 'Establishments',
                    'fields' => array('username' => 'login', 'password' => 'password'),
                    "salt" => "salt" // Relative field for SALT
                ],
            ],
            'loginAction' => [
                'controller' => 'establishments',
                'action' => 'login'
            ],
            'loginRedirect' => [
                'controller' => 'pages',
                'action' => 'dashboard'
            ],
            'logoutRedirect' => [
                'controller' => 'establishments',
                'action' => 'login',
            ]
        ]);

1 个答案:

答案 0 :(得分:0)

在您的身份验证配置中,使用option_value参数更改storage设置。为每个配置使用不同的密钥

Session