Как установить и прочитать cookie с помощью http-foundation, JWT и.ENV
У меня есть файл обработки входа в систему, в котором я пытаюсь установить cookie:
$expTime = time() + 3600;
$key = getenv("SECRET_KEY");
$token = array(
"iss" => request()->getBaseUrl(),
"sub" => [$user['id']],
"exp" => $expTime,
"iat" => time(),
"nbf" => time(),
"is_admin" => $user['role_id'] == 1
);
$jwt = JWT::encode($token, $key);
$accessToken = new Cookie('access_token', $jwt, $expTime, '/', getenv("COOKIE_DOMAIN"));
redirect('/', ['cookies' => [$accessToken]]);
Я использую Firebase/JWT, чтобы включить JWT в качестве значения cookie. SECRET_KEY и COOKIE_DOMAIN извлекаются из моего файла.ENV.
Я тогда позвоню redirect()
function redirect($path, $extra = []) {
$response = new Response(
null,
Response::HTTP_FOUND,
array('location' => $path)
);
if (key_exists('cookies', $extra)) {
foreach ($extra['cookies'] as $cookie) {
$response->headers->setCookie($cookie);
}
}
$response->send();
}
Затем я проверяю, был ли установлен cookie в моем индексном файле:
if (request()->cookies->has('access_token')) {
echo "Logged in";
} else echo "No cookie :(";
Моя проблема в том, что мой тест возвращает "Нет cookie:(".
Любая помощь будет принята с благодарностью.
Если вы предпочитаете, вы можете раскошелиться на GutHub: https://github.com/jpradcliffe/user-authentication
1 ответ
Решение
Я наконец решил проблему с некоторой помощью (см. Комментарии ниже). Код, как он стоит выше, является правильным. Проблема была в моем.env файле.