【问题标题】:How to Set and Read a Cookie w/ http-foundation, JWT, & .ENV如何使用 http-foundation、JWT 和 .ENV 设置和读取 Cookie
【发布时间】:2017-11-12 01:06:30
【问题描述】:

我有一个登录处理文件,我试图在其中设置一个 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 上 fork: jpradcliffe/user-authentication

【问题讨论】:

  • 尝试使用变量 (['cookies' => [$accessToken]]) 而不是传递 字符串 '$accessToken'。由于$accessToken 已经是Cookie 对象,我认为您也可以使用setCookie($cookie)。
  • 感谢@rickdenhaan 的建议,但不幸的是,在实施后我仍然收到相同的消息。
  • @rickdenhaan 更新:通过传递变量:(['cookies' => [$accessToken]]) 而不是字符串'$accessToken',我确实逃脱了setCookie($cookie)。所以,这确实简化了我的代码。但是,我的 cookie 问题仍然存在。
  • 好的,你能检查一下request()->cookies->all()或者$_COOKIE里面有没有东西吗?
  • @rickdenhaan 更新:感谢您对此的帮助。在告诉我代码在您的机器上运行后,我将问题隔离在我的 .env 文件中。我将 COOKIE_DOMAIN 设置为 localhost,却忘记了我以不同的名称创建了一个虚拟主机。我知道小错误,但如果没有你的帮助,我不会想到它,所以谢谢。

标签: php cookies jwt symfony-http-foundation


【解决方案1】:

我终于在一些帮助下解决了这个问题(见下面的 cmets)。上面的代码是正确的。问题出在我的 .env 文件中。

【讨论】:

    猜你喜欢
    • 2013-08-01
    • 2016-11-06
    • 1970-01-01
    • 1970-01-01
    • 2011-01-10
    • 2021-07-01
    • 2018-09-05
    • 1970-01-01
    • 2013-06-06
    相关资源
    最近更新 更多