Tôi có một trang web Drupal cũng lưu trữ ứng dụng Ionic qua JSON:API. Tôi muốn người dùng trang web được chuyển hướng khi chèn thực thể, vì vậy tôi đã thêm một chuyển hướng như sau:
function MYMODULE_flagging_insert(FlaggingInterface $flagging) {
$redirect_url = Url::fromRoute(MYCLASS::SECRET_ROUTE)->toString();
$response = new RedirectResponse($url);
$ phản hồi-> gửi();
}
Mã này sẽ chuyển hướng người dùng web như mong đợi khi họ thêm cờ. Tuy nhiên, mã này phá vỡ ứng dụng JSON:API. Khi tôi thêm cờ có người dùng từ JSON:API, tôi gặp lỗi này:
RuntimeException: Không thể bắt đầu phiên vì các tiêu đề đã được gửi bởi "/app/vendor/symfony/http-foundation/Response.php" ở dòng 384.trong Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage->start() (dòng 152 của /app/vendor/symfony/http-foundation/Session/Storage/NativeSessionStorage.php)
#0 /app/web/core/lib/Drupal/Core/Session/SessionManager.php(162): Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage->start()
#1 /app/web/core/lib/Drupal/Core/Session/SessionManager.php(193): Drupal\Core\Session\SessionManager->startNow()
#2 /app/vendor/symfony/http-foundation/Session/Session.php(189): Drupal\Core\Session\SessionManager->save()
#3 /app/web/core/lib/Drupal/Core/StackMiddleware/Session.php(60): Symfony\Component\HttpFoundation\Session\Session->save()
#4 /app/web/core/lib/Drupal/Core/StackMiddleware/KernelPreHandle.php(47): Drupal\Core\StackMiddleware\Session->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#5 /app/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(106): Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#6 /app/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(85): Drupal\page_cache\StackMiddleware\PageCache->pass(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#7 /app/vendor/asm89/stack-cors/src/Asm89/Stack/Cors.php(60): Drupal\page_cache\StackMiddleware\PageCache->handle(Object(Symfony\Component\HttpFoundation\Request), 1, thật)
#8 /app/web/core/lib/Drupal/Core/StackMiddleware/ReverseProxyMiddleware.php(47): Asm89\Stack\Cors->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#9 /app/web/core/lib/Drupal/Core/StackMiddleware/NegotiationMiddleware.php(52): Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#10 /app/vendor/stack/builder/src/Stack/StackedHttpKernel.php(23): Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#11 /app/web/core/lib/Drupal/Core/DrupalKernel.php(716): Stack\StackedHttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#12 /app/web/index.php(19): Drupal\Core\DrupalKernel->handle(Object(Symfony\Component\HttpFoundation\Request))
#13 {chính}
Vậy có cách nào để phát hiện trong hook chèn (hoặc các hook khác) xem người dùng có đăng nhập thông qua trang web Drupal hay thông qua JSON:API không?
Tôi muốn thêm chuyển hướng nếu người dùng đang truy cập Drupal thông qua trang web, nhưng tôi không muốn sử dụng chuyển hướng nếu người dùng đang truy cập Drupal thông qua ứng dụng.