如何使用 http-foundation、JWT 和 .ENV 设置和读取 Cookie
How to Set and Read a Cookie w/ 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 :(";
我的问题是我的测试返回 "No cookie :("。
如有任何帮助,我们将不胜感激。
如果您愿意,可以在 GutHub 上进行分叉:
jpradcliffe/user-authentication
我终于在一些帮助下解决了这个问题(见下面的评论)。上面的代码是正确的。问题出在我的 .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 :(";
我的问题是我的测试返回 "No cookie :("。
如有任何帮助,我们将不胜感激。
如果您愿意,可以在 GutHub 上进行分叉: jpradcliffe/user-authentication
我终于在一些帮助下解决了这个问题(见下面的评论)。上面的代码是正确的。问题出在我的 .env 文件中。