Nói tóm lại: một phiên php mới được bắt đầu theo mọi yêu cầu được thực hiện thông qua nextjs, bằng cách nào đó, tôi phải giữ cho phiên người dùng ẩn danh tồn tại.
Đối với người dùng ẩn danh của tôi, tôi cần theo dõi dữ liệu được gửi qua nextjs.
Ban đầu, tôi phát triển ứng dụng của mình với Drupal 8.9 và nhiều tháng sau đó đã nâng cấp lên 9.4-dev.
Trước khi nâng cấp lên 9.4-dev, tôi chắc chắn rằng các phiên hoạt động bình thường trên nhiều trình duyệt và người dùng ẩn danh cùng một lúc; Tôi có thể sử dụng ứng dụng, lưu trữ và sử dụng lại dữ liệu duy nhất cho mỗi người dùng ẩn danh, v.v.Thật không may, thật khó để xác minh điều này, việc hạ cấp xuống 8.9 sẽ gây thêm khó khăn..
Sau khi nâng cấp, người dùng ẩn danh đột nhiên chia sẻ cùng một phiên. Điều này có thể liên quan đến https://www.drupal.org/project/session_basing_temp_store/issues/3257214 và https://www.drupal.org/node/3006306 nhưng không chắc chắn. Việc sử dụng session_based_temp_store:1.1 dẫn đến phiên được chia sẻ và session_basing_temp_store:1.2 dẫn đến phiên không liên tục.
Mã bên dưới được sử dụng để hoạt động:
if ($this->currentUser->isAuthenticated()) {
$user_preferences = unserialize($this->currentUser->get('field_preferences')->value);
foreach ($values as $key => $value) {
$user_preferences[$key] = $value;
}
$this->currentUser->set('field_preferences', serialize($user_preferences))->save();
}
khác {
$session = \Drupal::service('session_basing_temp_store')->get('mymodule_user');
$user_preferences = $session->get('d_user');
foreach ($values as $key => $value) {
$user_preferences[$key] = $value;
}
$session->set('d_user', $user_preferences);
}
Khi cố gắng khắc phục sự cố, tôi đã thử sử dụng tempstore.private dẫn đến sự cố tương tự (phiên mới mỗi yêu cầu).
Sau này, tôi đã cố gắng sử dụng mã bên dưới, điều này cũng dẫn đến cùng một vấn đề:
$_SESSION['my_module']['data'] = 'Dữ liệu của tôi';
$request = $this->requestStack->getCurrentRequest();
$session = $request->getSession();
Ngay cả thử nghiệm var $_SESSION['my_module']['data'] cũng được "đặt lại" mọi lúc. Vì vậy, việc tôi cố gắng sử dụng phương pháp lưu trữ nào không thực sự quan trọng; vấn đề rõ ràng là một phiên không liên tục.
Tất cả các tài nguyên còn lại của tôi được gọi với các yêu cầu POST và được xác thực bằng oauth2. Mọi thứ hoạt động độc đáo cho người dùng được xác thực. Người dùng ẩn danh cũng có thể thực hiện thành công các yêu cầu.
Tìm kiếm trên Google Tôi thực sự không thể tìm thấy bất cứ điều gì hữu ích, điều này khiến tôi nghĩ rằng mình đang thiếu điều gì đó hiển nhiên..
Mục tiêu chính là: người dùng ẩn danh phải giữ phiên liên tục trong drupal không đầu, đồng thời khi người dùng đóng trình duyệt và quay lại một tuần sau, phiên tương tự vẫn phải tồn tại..
Tôi không muốn lưu trữ bất kỳ dữ liệu nào do người dùng nhập ở giao diện người dùng.
Tôi nghĩ vấn đề khá logic..: làm thế nào Drupal có thể biết ai đang đưa ra yêu cầu ẩn danh? Tôi có nên có một số loại cookie người dùng ẩn danh ở giao diện người dùng, được kết nối với phiên người dùng ẩn danh ở phần phụ trợ, được chuyển với mọi yêu cầu không?
Ai đó có thể chỉ cho tôi đi đúng hướng không? Bất kỳ sự giúp đỡ nào cũng được đánh giá cao.