1 Вопрос: Как исправить чтение куки после перенаправления назад?

вопрос создан в Thu, May 2, 2019 12:00 AM

Я написал простой код, который перенаправляется назад после нажатия кнопки. Перенаправление с cookie, но когда я читаю его, он зашифрован, как я могу прочитать расшифрованное значение cookie?

Как это работает? У меня есть FrontendController, который включает в себя макет, и когда я меняю стиль, он вызывает по маршруту /s /dark

Домашняя страница контроллера вызывает расширенную функцию внешнего интерфейса, и после этого мне нужно прочитать файл cookie, но он зашифрован.

function setStyle($style = "light") {
    if($this->cookie->getCookie('style') == "light") {
        $style = "dark";
    } else {
        $style = "light";
    }

    return redirect()->back()->withCookie(cookie('style', $style));
}

ИЗМЕНИТЬ р>

Я ожидаю свет значение в печенье, но у меня что-то вроде этого eyJpdiI6IitEUWc2WDlBT1l3bDcyNW1YbnlcL3RBPT0iLCJ2YWx1ZSI6IlNRQ2ZhcG5INE1iNVwvalZMTjFOZVBRPT0iLCJtYWMiOiJmOTFkYTU1ZTY0MTU5NDVhMjQzYWFhZTQxNzdkZGRlZDJkNThhMDU0YTE0YjYwMDU4NzZmYTI2ZTk5ZWIyY2Y1In0 =

    
0
  1. Это потому, что файл cookie - secure.
    2019-05-02 15: 14: 57Z
  2. Я знаю, что это безопасно, но я не знаю, как это сделать без этого? Я хочу сохранить некоторые куки, а некоторые нет ...
    2019-05-02 15: 17: 26Z
  3. Возможно, используете сеансы? Или сделайте некоторый интерфейсный JavaScript и сохраните его в localStorage.
    2019-05-02 15: 19: 15Z
  4. Я не хочу сохранять его и загружать с помощью JavaScript ... Есть ли решение с помощью Laravel?
    2019-05-02 15: 21: 07Z
1 ответ                              1                         

Вы можете использовать сеанс вместо куки в Laravel.

Чтобы сохранить данные сеанса:

$request->session()->put('key', 'value'); р>

Чтобы получить данные сеанса:

$value = $request->session()->get('key'); р>

Скажем, у вас есть кнопка с надписью «Переключить стиль на темный» и значением «темный». Когда стиль не темный, он говорит «Переключить стиль на свет» и имеет значение «светлый». Вы нажимаете кнопку, которая приводит вас к контроллеру, который устанавливает стиль в сеансе:

function setStyle(Request $request) 
{
    $style = $request->style;
    $request->session()->put('style', $style);

    return redirect()->back();
}

Теперь скажите в контроллере, когда вы показываете свою страницу, вы хотите, чтобы страница отображалась как «светлая» или «темная».

public function index()
{
    $style = $request->session()->get('style');

    if ($style == 'light') {
        // do your light thing
        $buttonText = "Switch style to dark";
    } else {
        // do your dark thing
        $buttonText = "Switch style to light";
    }


           // return redirect with style
 }
    
0
2019-05-02 16: 26: 02Z
  1. Я пробовал прямо сейчас, но не могу получить значение.
    2019-05-02 16: 04: 03Z
  2. Сначала вам нужно будет установить значение. Где находится функция, в которой пользователь устанавливает стиль файла cookie?
    2019-05-02 16: 07: 41Z
  3. Это контроллер, когда я устанавливаю стиль, существует FrontendController, который сохраняет значение стиля. После этого он перенаправляет на предыдущую страницу (HomepageController) и через контроллер устанавливает через View :: share значение из сеанса или файла cookie.
    2019-05-02 16: 10: 16Z
  4. В контроллере внешнего интерфейса, в котором вы устанавливаете стиль, выполните $request->session()->put('style', 'dark'); или любой другой стиль
    2019-05-02 16: 15: 22Z
  5. Все еще не работает Я пытался поместить setStyle и getStyle в один контроллер (HomeController), и он работает, но когда вы разделяете его, он все равно не работает ...
    2019-05-02 16: 27: 27Z
источник размещен Вот