CakePHP 3.5 Запись и шифрование файлов cookie - PullRequest
0 голосов
/ 04 июня 2018

Справочная информация: Я только что обновился до CakePHP 3.5.17.

У меня был код, который пишет cookie.Тем не менее, кажется, что мне не хватает нескольких шагов, чтобы зашифровать его.Может кто-нибудь пролить свет, где пропущены шаги?В данный момент веб-браузер получает значение cookie, но он не зашифрован.Примечание. Я также установил cookieKey в своем app.php

. Я также включил эти шаги в приведенную ниже ссылку

https://book.cakephp.org/3.0/en/development/application.html#adding-http-stack

//In src/Controller/UsersController.php

use Cake\I18n\Time; 
use Cake\Http\Cookie\Cookie;
use Cake\Http\Cookie\CookieCollection;    
use Cake\Core\Configure;  
use App\Application;
use Cake\Error\Middleware\ErrorHandlerMiddleware;
use Cake\Http\MiddlewareQueue;
use Cake\Routing\Middleware\AssetMiddleware;
use Cake\Routing\Middleware\RoutingMiddleware;
use Cake\Http\Middleware\EncryptedCookieMiddleware;

     public function writecookie() {

        $cookie = new Cookie(
            'goodday', // name
            'YES', // value
            (Time::now())->modify('+1 year'), // expiration time, if applicable
            '/', // path, if applicable
            '', // domain, if applicable
            false, // secure only?
            true // http only ?
        );

        $middlewareQueue = new MiddlewareQueue();           

        $cookiesEncrypted = new EncryptedCookieMiddleware(
            ['goodday'],
            Configure::read('Security.cookieKey')
        );

        $cookiesEncrypted = $middlewareQueue->add($cookiesEncrypted);

        $this->response = $this->response->withCookie($cookie); //value is still YES in the web browser cookie storage

    }

После дальнейшегоОтладка, я заметил, что в классе EncryptedCookieMiddleware.Утверждается, что файлы cookie в данных запроса будут расшифрованы, а файлы cookie в заголовках ответов будут автоматически зашифрованы.Если ответом является Cake \ Http \ Response, данные cookie, установленные с помощью withCookie() и `cookie ()` `, также будут зашифрованы.Но для меня это не автоматически шифровать?

1 Ответ

0 голосов
/ 04 июня 2018

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

Вы регистрируете их в своем методе приложений Application::middleware(), в событии Server.buildMiddleware или при подключении маршрутов.

// src/Application.php

// ...
use Cake\Http\Middleware\EncryptedCookieMiddleware;

class Application extends BaseApplication
{
    public function middleware($middlewareQueue)
    {
        // ...
        $middlewareQueue->add(new EncryptedCookieMiddleware(/* ... */));
        return $middlewareQueue;
    }
}

См.также

...