1

我有一个登录处理文件,我试图在其中设置一个 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

4

1 回答 1

0

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

于 2017-06-11T17:46:06.877 回答