Как создать файл cookie в Laravel и указать тот же атрибут сайта (Слабый, Нет, строгий)?

#laravel #cookies #laravel-8 #samesite

Вопрос:

В настоящее время я устанавливаю такой файл cookie (в промежуточном программном обеспечении).:

 cookie()->queue("loginToken", $loginToken, 60*24*365*10);
 

Как мне указать SameSite = Нет?

Я использую Laravel 8.

Ответ №1:

в config/session.php

 'same_site' => "none",
 

Комментарии:

1. Я думаю, что «нет» нуждается в кавычках вокруг него, потому что это должна быть строка.

2. Это близко, но я думаю, что это не совсем правильный ответ. Это устанавливает только одни и те же настройки сайта для сеансовых файлов cookie, а не какие-либо пользовательские файлы cookie, которые я хочу установить.

3. По какой-то причине для меня это ничего не изменило. Все еще получаю те же ошибки

Ответ №2:

Вот что я сделал. Помните, что это входит в функцию дескриптора промежуточного программного обеспечения.

     $response = $next($request);

    // https://symfony.com/doc/current/components/http_foundation.html#setting-cookies
    // https://github.com/symfony/symfony/blob/5.3/src/Symfony/Component/HttpFoundation/Cookie.php
    $cookie = SymfonyComponentHttpFoundationCookie::create("loginToken")
        ->withValue($loginToken)
        ->withExpires(strtotime(" 12 months"))
        ->withSecure(true)
        ->withHttpOnly(true)
        ->withSameSite("strict")
        ;

    $response->headers->setCookie($cookie);
 

Ответ №3:

Объявление cookie функции является:

 function cookie($name = null, $value = null, $minutes = 0, $path = null, $domain = null, $secure = null, $httpOnly = true, $raw = false, $sameSite = null)
 

И queue просто перенаправляет параметры, чтобы вы могли сделать:

 cookie()->queue("loginToken", $loginToken, 60*24*365*10, null, null, null, true, false, 'None');