php - JWT Cookie 存储不正确 - Laravel

标签 php laravel cookies jwt

我正在使用 Laravel 5.1 并且我正在尝试实现一个基本的 JWT-Auth 逻辑。

当我正确创建 jwt_token 时(我将其记录到 laravel.log,token 按预期分为三个不同的部分),当我尝试要使用 jwt_token 值创建一个 cookie,将创建一个完全不同的 cookie,没有用点分隔,并且它比原始 jwt_token 大得多。

我认为代码非常简单:

$jwt_token = $this->findOrCreateUser($user);
Log::error('My jwt_token is '. $jwt_token); //from the log here i see the right jwt_token

//i disable the http-only flag because i want to read it with js

return redirect('/index.html')->withCookie(Cookie::make('jwt_token',$jwt_token,1000,null,null,false,false));

如果有人能给我一些可能出错的指示,我会很高兴!

谢谢

最佳答案

Laravel 5.1 默认带有一个名为 EncryptCookies 的中间件,它在 HTTP 内核的全局 $middleware 数组中注册。因此,cookie 在发送到浏览器时会自动加密,这就是为什么您的 cookie 值不是 JWT token 的纯文本表示形式的原因。

您可以通过两种方式轻松解决此问题:

1.将cookie名称添加到App\Http\Middleware\EncryptCookies中的$except数组中:

protected $except = [
    'jwt_token'
];

2. 注释/删除 App\Http\Kernel 类中的 EncryptCookies 中间件(尽管我不推荐这样做,除非你特别指定希望所有 cookie 都未加密):

protected $middleware = [
    \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
    // \App\Http\Middleware\EncryptCookies::class,
    \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
    \Illuminate\Session\Middleware\StartSession::class,
    \Illuminate\View\Middleware\ShareErrorsFromSession::class,
    \App\Http\Middleware\VerifyCsrfToken::class,
];

关于php - JWT Cookie 存储不正确 - Laravel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34963196/

相关文章:

javascript - 如何获取 session cookie

php - 将动态数据发送到 TCPDF 中的 Header 函数

java - Android 和 PHP 加密/解密 - 填充问题

laravel - 使用 spatie/laravel-google-calendar 模拟用户

php - Laravel 服务容器是否可以绑定(bind)到类及其所有祖先 - 就像在 Symfony 中一样

php - 共享主机上的 403 Forbidden Laravel

javascript - 如何将 php 数组更改为 javascript 数组

php - 改进 PHP 'for' 循环

ios - SharedHTTPCookieStorage cookie 是否本地存储在 IOS 应用程序中?

html - cookie 与 session 的优缺点是什么?