Как установить и прочитать 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 файле.

Другие вопросы по тегам