2015-06-21 2 views
9

У меня есть одностраничное приложение, сделанное на Laravel 5.1. Я использую localStorage для хранения ключа API, и мне не нужны файлы cookie. не Laravel создает два печенья для меня:Как отключить cookies в Laravel 5?

  • XSRF-ЗНАК
  • laravel_session

Если установить SESSION_DRIVER в array в моей среде конфигурации, laravel_session печенья больше не генерируется.

Но я думаю, что может быть проблема с XSRF-TOKEN печенья, потому что я нашел этот кусок кода в 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; 
} 

И 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; 
} 

Похоже, он устанавливает этот файл cookie ни на что. Я мог бы отключить это промежуточное программное обеспечение, но я хочу использовать его для проверки токена CSRF с заголовками HTTP. Могу ли я полностью отключить cookies?

+1

Если вы используете laravel для API с помощью токенов, почему бы не полностью отключить промежуточное программное обеспечение VerifyCsrfToken? Это использует файлы cookie, которые вам не нужны. Вы можете отключить, перейдя в приложение/http/Kernel.php и прокомментируйте строку – codegeek

+0

только для получения дополнительной информации о фону, в чем причина отказа от куки-файлов? – ExoticChimp

+0

@ExoticChimp Существует закон, который обязывает информировать пользователя о файлах cookie, если вы используете их. Я не нуждаюсь в них, поэтому я бы скорее отключил их и был свободен от информации «Мы используем куки» :) –

ответ

2

Просто прокомментируйте строки в 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, 

Надеюсь, это поможет.

+0

Прочтите последний параграф моей темы. –

+0

Вы можете отправить токен CSRF через HTTP-заголовок, конечно, но вы должны хранить токен на стороне клиента. Поэтому, если вы хотите отключить куки-файлы, вам нужно выяснить, как передавать и хранить токен, полученный от внешнего сервера. Может быть, localstorage пригодится для хранения. Кроме того, вы также отправляете процедуры, т. Е. Устанавливаете правильный HTTP-заголовок. – ozanmuyes