2012-05-09 28 views
11

Tôi đang làm việc với CakePHp và tôi gặp sự cố khi duy trì phiên trên các tên miền phụ. Vấn đề của tôi là như sau:CakePHP giữ phiên từ tên miền chính sang tên miền phụ

  • Người dùng đăng nhập vào 'localhost/login'
  • Nếu chứng thực được chuyển hướng tới 'customer.localhost/home'.

Hiện tại, Bánh đang tạo cookie cho mỗi miền, ví dụ: localhost và customer.localhost. Điều này có nghĩa là tôi không thể giữ phiên làm việc cho người dùng. Có cách nào để đặt tất cả miền cookie được cố định thành tên miền gốc với mục tiêu giữ phiên làm việc trên các tên miền phụ không?

Tôi đã thử nhập mã này vào thư mục khởi động nhưng không có hiệu lực: ini_set ('session.cookie_domain', '.localhost');

Nếu bạn nghĩ rằng điều này không thể được thực hiện, vui lòng cho tôi biết để tôi có thể tiếp tục từ vấn đề khó chịu này.

Rất cám ơn,

kSeudo

+2

Phiên bản nào của CakePHP đang sử dụng ? 1,3 hoặc 2.x? –

Trả lời

16

Sessions:

Để thực hiện các cookie phiên có giá trị cho tất cả các tên miền phụ của bạn và miền cấp cao nhất, bạn thực sự cần phải cài đặt nó cho mình trong APP/config/bootstrap.php của bạn file:

ini_set('session.cookie_domain', '.domain.com'); 

Sau đó, trong APP/config/core.php f của bạn ile, thiết lập an ninh thấp:

Configure::write('Security.level', 'low'); 

"nếu không referer_check sẽ được thiết lập để HTTP_HOST hiện tại dòng đối tượng CakeSession 441."



Cookies:

On this page nó giải thích mà bạn có thể sử dụng biến 'miền':

Tên miền cho phép để truy cập các tập tin cookie. ví dụ: Sử dụng ‘.yourdomain.com’ để cho phép truy cập từ tất cả tên miền phụ của bạn.

mỗi mã ví dụ của họ:

<?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; 
} 
+0

Cảm ơn sự giúp đỡ của bạn, cuối cùng tôi đã làm việc đó.Một điều cần nhớ không cố gắng thực hiện điều này bằng 'localhost' đảm bảo bạn sử dụng miền trong máy chủ lưu trữ của bạn như 'example.com'. – kSeudo

+0

liên kết đầu tiên đã chết – tsukimi

+0

@tsukimi Cảm ơn - đã xóa. – Dave

1

Có một cấu hình trong app/config/core.php để thay đổi tên miền cookie phiên: bạn

Configure::write('Session', array(
    'defaults' => 'php', 
    'ini' => array(
     'cookie_domain' => '.example.com' 
    ) 
)); 
+0

Điều này không hiệu quả đối với tôi, nhưng câu trả lời được chấp nhận đã làm. – drmonkeyninja

+0

Tác phẩm này hoạt động nhưng với tên chỉ thị phù hợp. Đã chỉnh sửa câu trả lời. – savedario

Các vấn đề liên quan