如何在Laravel 5中禁用cookie?

Rob*_*bok 12 php cookies single-page-application laravel-5

我在Laravel 5.1上制作了单页应用程序.我使用localStorage来保存API密钥,我不需要cookie.Laravel为我创建了两个cookie:

  • XSRF-TOKEN
  • laravel_session

如果我设置SESSION_DRIVERarray在我的环境配置,laravel_session不再生成的cookie.

但我认为XSRF-TOKENcookie 可能存在问题,因为我在VerifyCsrfToken中间件类中发现了这段代码:

public function handle($request, Closure $next)
{
    if ($this->isReading($request) || $this->shouldPassThrough($request) || $this->tokensMatch($request)) {
        return $this->addCookieToResponse($request, $next($request));
    }

    throw new TokenMismatchException;
}
Run Code Online (Sandbox Code Playgroud)

addCookieToResponse方法如下:

protected function addCookieToResponse($request, $response)
{
    $config = config('session');

    $response->headers->setCookie(
        new Cookie(
            'XSRF-TOKEN', $request->session()->token(), time() + 60 * 120,
            $config['path'], $config['domain'], false, false
        )
    );

    return $response;
}
Run Code Online (Sandbox Code Playgroud)

似乎无论如何设置这个cookie.我可以禁用此中间件,但我想用它来验证带有HTTP头的CSRF令牌.我可以完全禁用cookie吗?

oza*_*yes 6

只需注释掉app\Http\Kernel.php与cookie和会话相关的行.以下是我找到的;

\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,
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你.