首页 > 解决方案 > Laravel - 在中间件中删除 Cookie

问题描述

我的项目中有一个中间件,可以调用每个请求。它将检查 Request 是否有特定的 cookie,然后删除另一个 cookie。但似乎 Cookie 在响应中返回之前不会被遗忘或设置在 Laravel 中。这样 的事情return response('view')->withCookie($cookie);在中间件中是不可能的。

我也试过Cookie::queue(Cookie::forget('myCookie'));没有发生任何事情,cookie 显示在我的浏览器中。

这是我的中间件句柄方法:

public function handle(Request $request, Closure $next)
{
    if (! $request->cookie('clear_token')) {
        cookie()->forget('access_token');                 # not worked
        Cookie::queue(Cookie::forget('access_token'));    # not worked
    }

    return $next($request);
}

标签: laravellaravel-5cookies

解决方案


您也可以更改中间件中的响应:

https://laravel.com/docs/5.0/middleware

<?php namespace App\Http\Middleware;

class AfterMiddleware implements Middleware {

    public function handle(\Illuminate\Http\Request $request, \Closure $next)
    {
        $response = $next($request);

        // Forget cookie

        return $response;
    }
}

推荐阅读