2016-01-13 60 views
0

我面临的问题是Laravel未加密我在中间件中设置的Cookie。由于这个原因,当我尝试在另一个控制器中检索cookie值时,它的值将变为空白。以下是我的中间件代码Laravel不加密Cookies

public function handle($request, Closure $next) 
{ 
if($request->hasCookie('uuid')) 
{ 
    return $next($request); 
} 
else 
{ 
    $uuid = Uuid::generate(); 
    if (Auth::check()) 
     $user_id = Auth::user()->id; 
    else 
     $user_id = ''; 

    Visitors::create([ 
     'user_id' => $user_id, 
     'uuid' => $uuid 
    ]); 

    $response = $next($request); 
    return $response->withCookie(cookie()->forever('uuid', $uuid)); 
} 
} 

我已经创建了一个UUID中间件,用于在有人来到站点时随时设置UUID参数。我在我的路线中使用这个中间件。

这会导致设置UUID Cookie,但未加密。

在另一个控制器功能,当我尝试使用

$uuid = Request::Cookie(uuid); 

它是走出来的空白,以获取UUID cookie的值。如果我将路由中的中间件序列更改为('web','uuid'),我开始得到TokenExceptionError('uuid','web')。 )

任何人都面临类似的问题?

+0

你怎么知道cookie没有被加密?这听起来更像是它没有被设置。 – Kryten

+0

您的会话cookie是否被加密? –

+0

@Kryten:我可以看到UUID cookie。它是常规的UUID格式,并且未加密。 –

回答

0

看起来您的uuid中间件在加密cookie的中间件之前运行。您的路由组的中间件定义为['uuid','web'],并且加密/解密cookie的中间件位于web组中。

网络组的末尾添加您的中间件或路线组改变中间件的顺序,以[“网”,“UUID”]