2009-10-16 24 views
5

Phiên của tôi dường như chỉ hợp lệ trong cửa sổ/tab hiện tại. Ngoài ra nó dường như thời gian chờ một cách nhanh chóng. Heres cách tôi đang cố gắng để làm điều đó:Zend Framework rememberMe() dường như không nhớ tôi

Đây là trong điều khiển đăng nhập của tôi:

$adapter = $this->getAuthAdapter($data); 
$auth = Zend_Auth::getInstance(); 
$result = $auth->authenticate($adapter); 

if (!$result->isValid()) { 
    $this->view->err = "Invalid username or password.<br/>Please try again."; 
    return $this->render('index'); // re-render the login form 
} 

Zend_Session::rememberMe(60*60*24*7*4); 

Và đây là trong bootstrap của tôi:

Zend_Session::start(); 

Tôi tương đối mới đối với một số của công cụ này, vì vậy chịu với tôi! Mọi sự trợ giúp sẽ rất được trân trọng.

Trả lời

3

Đây là những gì đang diễn ra. Trang web này nằm trên máy chủ chia sẻ thư mục phiên với một trang web khác trên máy chủ. Mặc dù tôi tăng tuổi thọ phiên với ini_set, các phiên của tôi vẫn bị xóa bởi ứng dụng khác.

Để giải quyết điều này, tôi chỉ cần đặt session.save_path thành một thư mục mới. Đã giải quyết được vấn đề!

1

Nhìn qua các nguồn cho zend_session thì Nhớ đến anh() phương pháp gọi rememberUntil() trong đó kêu gọi việc xây dựng trong session_set_cookie_params phương pháp php()

Vì vậy, bạn có thể muốn kiểm tra giá trị php.ini của bạn cho session.cookie_lifetime. Nếu nó không phải là 0, thì Zend_Session :: rememberMe() sẽ vô ích trừ khi giá trị nhỏ hơn session.cookie_lifetime. Trong trường hợp này, bạn muốn đặt nó thành 0 trong php.ini hoặc trong ứng dụng của bạn bằng cách sử dụng ini_set() như được chỉ ra trong chú thích đầu tiên trên session.cookie_lifetime man page.

+0

Hi Mark, xin lỗi vì đã trả lời chậm. Tôi đã không nghĩ để xem xét ở đây trong một vài ngày. cookie_lifetime là trong thực tế thiết lập để 0. Tôi đã đọc mà nhớMe cần phải được gọi là trước session_start() để session_set_cookie_params có thể thiết lập suốt đời. Tuy nhiên tôi cũng đã đọc rằng zend_session :: start() nên đi trong bootstrap, nơi nó được gọi trước khi kịch bản đăng nhập chạy và thực thi rememberMe(). Có suy nghĩ gì không? – Brian

+0

Cung cấp cho nó một shot, dính vào cuộc gọi RememberMe ngay sau khi bắt đầu phiên. Nó không thể làm tổn thương thiết lập thời gian chờ ở đó vì bạn chưa thực sự xác thực – Mark

2

Tôi chỉ muốn thêm rằng bạn thay đổi session.save_path trong .htaccess bằng hàng tiếp theo để làm cho nó hoạt động. Tôi thấy câu trả lời nghĩ rằng tôi đã thay đổi nó trong .ini, nhưng nó nằm trong .htaccess.

Ví dụ:

php_value session.save_path /home/kaos/data/sessions/