kSe*_*udo 11 authentication session cakephp
我正在使用Cakephp,我遇到了跨子域维护会话的问题.我的问题如下:
目前,Cake正在为每个域创建一个cookie,即localhost和customer.localhost.这意味着我无法保持会话为用户工作.有没有办法让所有cookie域固定到父域,目的是保持会话跨子域工作?
我试过在我的引导程序中输入它但它没有效果:ini_set('session.cookie_domain','.localhost');
如果您认为无法做到这一点,请随时告诉我,以便我可以从这个令人沮丧的问题继续前进.
非常感谢,
kSeudo
Dav*_*ave 16
会话(CakePHP 2.x):
要使会话Cookie对所有子域和顶级域有效,您实际上需要在APP/config/bootstrap.php文件中自行设置:
ini_set('session.cookie_domain', '.domain.com');
Run Code Online (Sandbox Code Playgroud)
然后,在您的APP/config/core.php文件中,将Security设置为low:
Configure::write('Security.level', 'low');
Run Code Online (Sandbox Code Playgroud)
"否则referer_check将被设置为CakeSession对象行441中的当前HTTP_HOST."
会话(CakePHP 3.x)
会话cookie路径默认为app的基本路径.要更改此设置,您可以使用session.cookie_path ini值.例如,如果您希望会话在所有子域中保持不变,则可以执行以下操作:
Configure::write('Session', [
'defaults' => 'php',
'ini' => [
'session.cookie_path' => '/',
'session.cookie_domain' => '.yourdomain.com'
]
]);
Run Code Online (Sandbox Code Playgroud)
Cookies(CakePHP 2.x):
在此页面上,它解释了您可以使用'domain'变量:
允许访问cookie的域名.例如,使用'.yourdomain.com'允许从所有子域进行访问.
根据他们的示例代码:
<?php
public $components = array('Cookie');
public function beforeFilter() {
parent::beforeFilter();
$this->Cookie->name = 'baker_id';
$this->Cookie->time = 3600; // or '1 hour'
$this->Cookie->path = '/bakers/preferences/';
$this->Cookie->domain = 'example.com';
$this->Cookie->secure = true; // i.e. only sent if using secure HTTPS
$this->Cookie->key = 'qSI232qs*&sXOw!';
$this->Cookie->httpOnly = true;
}
Run Code Online (Sandbox Code Playgroud)
Cookies(CakePHP 3.x):
读到这里.
Cookie可用的域.要使example.com的所有子域中的cookie可用,请将域设置为".example.com".
| 归档时间: |
|
| 查看次数: |
6842 次 |
| 最近记录: |