Я хочу, чтобы можно было установить Cookie onKernelRequest Method, но cookie не установлен, Все остальное работает нормально, что здесь отсутствует? Что я хочу достичь, так это то, что если пользователь не войдет в систему и не имеет cookie, он должен увидеть основные заголовки заголовков HTTP. Если пользователь вошел в систему или имеет файл cookie, он имеет доступ к доменам предварительного просмотра без необходимости вводить свои учетные данные пользователя в http basic auth.Symfony - Настройка Cookie onKernelRequest
const AUTH_USER = 'myuser';
const AUTH_PW = 'mypass';
public function sendAuthorizationHeader()
{
header('WWW-Authenticate: Basic realm="Preview Domain"');
header('HTTP/1.0 401 Unauthorized');
die();
}
public function onKernelRequest(GetResponseEvent $event)
{
if (!$event->isMasterRequest()) {
return;
}
$request = $event->getRequest();
$host = $request->getHost();
$loginSuccessful = false;
// check if we are on a preview domain
if (preg_match('/^preview-\d+/', $host)) {
$user = $request->getUser();
$cookie = $request->cookies->get('preview_user');
$phpAuthUser = $request->server->get('PHP_AUTH_USER');
$phpAuthPw = $request->server->get('PHP_AUTH_PW');
if (isset($phpAuthUser) && isset($phpAuthPw)) {
if ($phpAuthUser == self::AUTH_USER && $phpAuthPw == self::AUTH_PW) {
$loginSuccessful = true;
}
} else if ($user === null && $cookie === null) {
$this->sendAuthorizationHeader();
}
if (!$loginSuccessful) {
$this->sendAuthorizationHeader();
} else {
$cookie = new Cookie('preview_user', true, 86400, '/', null, false, false);
$response = new Response();
$response->headers->setCookie($cookie);
$response->sendHeaders();
}
}
}
Отправка печенье должно пройти через объект ответа, а не запрос, я думаю, вы должны использовать другое событие такого как на KernelResponse, может быть? – Pierre
Дело в том, что мне нужно это приложение, когда мы запрашиваем такие домены, как предварительный просмотр-1234. Работает ли это на KernelResponse? Пьер? – Sharpy35
Я пробовал теперь с onKernelResponse, но cookie все еще не установлен :( – Sharpy35