gpt4 book ai didi

laravel - 在 Laravel 自定义中间件中设置 Cookie

转载 作者:行者123 更新时间:2023-12-04 17:08:27 25 4
gpt4 key购买 nike

我想在自定义 Laravel 中间件中设置一个 cookie。这个想法是在用户通过任何登录页面访问我的网站时设置 cookie 值。

所以我所做的是我创建了一个名为 UUIDMiddleware 的中间件.我在我的路由中使用这个中间件和 web 中间件。下面是来自中间件的代码。

if($request->hasCookie('uuid'))
{
return $next($request);
}
else
{
$uuid = Uuid::generate();
$response = new Response();
return $response->withCookie(cookie()->forever('uuid', $uuid));
}

如您所见,我正在检查 cookie 是否存在。如果没有,我会将控制权传递给下一个请求。

问题是在使用 return $response 设置 cookie 时,我无法将控制权传递给下一个请求。我该如何解决?

在这种情况下会发生什么是如果没有设置 cookie,它会设置一个 cookie 并显示一个空白屏幕。如果我刷新,我会看到带有 cookie 集的网站。

必须有一种方法以正确的方式使用中间件设置 cookie。我该怎么做?

最佳答案

您可以在 middleware 中获取响应对象像这样:

public function handle($request, Closure $next)
{
$response = $next($request);

// Do something after the request is handled by the application

return $response;
}

所以你可以做这样的事情

if($request->hasCookie('uuid')) {
return $next($request);
}

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

关于laravel - 在 Laravel 自定义中间件中设置 Cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34728924/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com