【问题标题】:Best way to create a forever cookie when a user accesses the website in Laravel当用户在 Laravel 中访问网站时创建永久 cookie 的最佳方法
【发布时间】:2018-03-07 12:06:13
【问题描述】:

我正在寻找创建在用户访问网站时不会过期的 cookie 的最佳方法(cookie 包含 uuid)。我正在使用 Laravel,据我所知,最好的方法似乎是使用中间件。请任何人提出其他建议,以及任何代码示例。

谢谢

【问题讨论】:

  • 到目前为止你尝试过什么?显示一些代码示例。
  • 您是否想将其永久存储在客户端的浏览器中?

标签: laravel cookies


【解决方案1】:

我会为此使用中间件,创建一个 SetUserCookie 中间件或类似的:

class SetUserCookie { 
    public function handle($request, Closure $next) {
        $response = $next($request);
        return $response->withCookie(cookie()->forever('uuid', Str::uuid()));
    }
 }

在内核中注册中间件:

protected $routeMiddleware = [
    ...
    'setUserCookie' => \App\Http\Middleware\SetUserCookie::class, 
    ...
];

您还可以使用队列方法将 cookie 附加到响应:

$minutes = 60 * 24 * 365 * 10; // ten years should be long enough
Cookie::queue(Cookie::make('uuid', Str::uuid(), $minutes));

Cookie::queue('uuid', Str::uuid(), $minutes);

Request docs

【讨论】:

  • 效果很好,需要在受保护的 $middleware 中注册中间件,然后添加一些检查以查看 cookie 是否首先存在。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-03-20
  • 1970-01-01
  • 1970-01-01
  • 2010-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多