2017-01-23 41 views
0

我用一个简单的事情扼杀: 如何分辨蛋糕要使用不同的前缀(路由)不同的会话配置。不同的会话为CakePHP的前缀

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

所以,在我App.php,会话配置为:

'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中设置使用会话内部。

EDIT 这里是验证元件装载:(在一个用于前缀退出相同,只是控制器模型/控制器改变)

$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', 
      ] 
     ]); 
+0

Caould您发布验证的配置,可以帮助 –

+0

对不起,我不在那里。只是做了!但我不认为它在这里相关。 – azerto00

回答

0

在你的AUTH配置,使用storage PARAM到更改Session设置。使用不同的密钥每个配置

$this->loadComponent('Auth', [ 
     'authorize' => ['Controller'], 
     'storage' => ['className' => 'Session', 'key' => 'Auth.Admin'], 
     /* ... */ 
    ] 
);