0
我有在我試圖設置一個cookie登錄處理文件:如何設置和讀取Cookie的W/HTTP的基礎上,智威湯遜,與.ENV
$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]]);
我使用火力地堡/ 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();
}
然後我測試是否餅乾一直在我的索引文件中設置:
if (request()->cookies->has('access_token')) {
echo "Logged in";
} else echo "No cookie :(";
我的問題是,我的測試返回「沒有餅乾:(」。
任何幫助,將不勝感激。
如果你喜歡,你可以在GutHub上分享它: jpradcliffe/user-authentication
嘗試使用變量('['cookies'=> [$ accessToken]'')而不是傳遞***字符串***''$ accessToken''。由於'$ accessToken'已經是一個'Cookie'對象,我認爲你可以用'setCookie($ cookie)'離開。 – rickdenhaan
謝謝你的建議@ rickdenhaan,但不幸的是,在實施它之後,我仍然得到相同的信息。 – jpradcliffe
@rickdenhaan更新:通過傳遞變量:'(['cookies'=> [$ accessToken]])''而不是字符串''$ accessToken''我確實用'setCookie($ cookie)'離開了。所以,這確實簡化了我的代碼。但是,我的cookie問題依然存在。 – jpradcliffe