2016-01-23 36 views
3

我正在使用Laravel 5.1我试图实现一个基本的JWT-Auth逻辑。JWT Cookie不存储正确 - Laravel

,而我创造jwt_token权(我把它记录到laravel.log,令牌有它的预期点分成三个不同的部分),当我尝试创建一个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)); 

我会很高兴,如果有人可以给我什么可能是错误的一些指点!

感谢

回答

2

Laravel 5.1船舶默认与命名是全球$middleware阵列的HTTP内核的注册EncryptCookies中间件。因此,cookie在发送到浏览器时会自动加密,这就是您的cookie值不是JWT令牌的明文表示的原因。

您可以轻松地解决这个问题有两种方法:

App\Http\Middleware\EncryptCookies添加cookie的名称为$except阵列:

protected $except = [ 
    'jwt_token' 
]; 

2.评论/删除EncryptCookies中间件在App\Http\Kernel班(虽然我不建议这样做,除非你特别希望所有的cookies都是未加密的):

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, 
]; 
+0

谢谢!很好的答案。 我应该仔细阅读这里的文档https://laravel.com/docs/5.0/requests#cookies,你是对的! –

+0

非常欢迎。 – Bogdan