【发布时间】:2017-06-07 15:13:01
【问题描述】:
我被一件简单的事情扼杀了: 如何告诉 Cake 为不同的前缀(路由)使用不同的 Session 配置。
我有主域 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/Controller/Couriers/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',
]
]);
【问题讨论】:
-
能否发布您的身份验证配置,这可能会有所帮助
-
对不起,我不在。刚做了!但我不认为它在这里相关。
标签: php session cakephp cakephp-3.0