Class EncryptedCookieMiddleware
Middlware for encrypting & decrypting cookies.
This middleware layer will encrypt/decrypt the named cookies with the given key and cipher type. To support multiple keys/cipher types use this middleware multiple times.
Cookies in request data will be decrypted, while cookies in response headers will
be encrypted automatically. If the response is a Cake\Http\Response, the cookie
data set with withCookie()
and `cookie()`` will also be encrypted.
The encryption types and padding are compatible with those used by CookieComponent for backwards compatibility.
- Cake\Http\Middleware\EncryptedCookieMiddleware uses Cake\Utility\CookieCryptTrait
Properties summary
-
$cipherType
protectedstring
Encryption type. -
$cookieNames
protectedarray
The list of cookies to encrypt/decrypt -
$key
protectedstring
Encryption key to use.
Inherited Properties
Method Summary
-
__construct() public
Constructor -
__invoke() public
Apply cookie encryption/decryption. -
_getCookieEncryptionKey() protected
Fetch the cookie encryption key. -
decodeCookies() protected
Decode cookies from the request. -
encodeCookies() protected
Encode cookies from a response's CookieCollection. -
encodeSetCookieHeader() protected
Encode cookies from a response's Set-Cookie header
Method Detail
__construct() public ¶
__construct( array $cookieNames , string $key , string $cipherType 'aes' )
Constructor
Parameters
- array $cookieNames
- The list of cookie names that should have their values encrypted.
- string $key
- The encryption key to use.
- string $cipherType optional 'aes'
The cipher type to use. Defaults to 'aes', but can also be 'rijndael' for backwards compatibility.
__invoke() public ¶
__invoke( Psr\Http\Message\ServerRequestInterface $request , Psr\Http\Message\ResponseInterface $response , callable $next )
Apply cookie encryption/decryption.
Parameters
- Psr\Http\Message\ServerRequestInterface $request
- The request.
- Psr\Http\Message\ResponseInterface $response
- The response.
- callable $next
- The next middleware to call.
Returns
A response.
_getCookieEncryptionKey() protected ¶
_getCookieEncryptionKey( )
Fetch the cookie encryption key.
Part of the CookieCryptTrait implementation.
Returns
decodeCookies() protected ¶
decodeCookies( Psr\Http\Message\ServerRequestInterface $request )
Decode cookies from the request.
Parameters
- Psr\Http\Message\ServerRequestInterface $request
- The request to decode cookies from.
Returns
Updated request with decoded cookies.
encodeCookies() protected ¶
encodeCookies( Cake\Http\Response
$response )
Encode cookies from a response's CookieCollection.
Parameters
-
Cake\Http\Response
$response - The response to encode cookies in.
Returns
encodeSetCookieHeader() protected ¶
encodeSetCookieHeader( Psr\Http\Message\ResponseInterface $response )
Encode cookies from a response's Set-Cookie header
Parameters
- Psr\Http\Message\ResponseInterface $response
- The response to encode cookies in.
Returns
Updated response with encoded cookies.
Methods used from Cake\Utility\CookieCryptTrait
_checkCipher() protected ¶
_checkCipher( string $encrypt )
Helper method for validating encryption cipher names.
Parameters
- string $encrypt
- The cipher name.
Throws
When an invalid cipher is provided.
_decode() protected ¶
_decode( string $value , string|false $encrypt , string|null $key )
Decodes and decrypts a single value.
Parameters
- string $value
- The value to decode & decrypt.
- string|false $encrypt
- The encryption cipher to use.
- string|null $key
- Used as the security salt if specified.
Returns
Decoded values.
_decrypt() protected ¶
_decrypt( array $values , string|boolean $mode , string|null $key null )
Decrypts $value using public $type method in Security class
Parameters
- array $values
- Values to decrypt
- string|boolean $mode
- Encryption mode
- string|null $key optional null
- Used as the security salt if specified.
Returns
Decrypted values
_encrypt() protected ¶
_encrypt( string $value , string|boolean $encrypt , string|null $key null )
Encrypts $value using public $type method in Security class
Parameters
- string $value
- Value to encrypt
- string|boolean $encrypt
Encryption mode to use. False disabled encryption.
- string|null $key optional null
- Used as the security salt if specified.
Returns
Encoded values
_explode() protected ¶
_explode( string $string )
Explode method to return array from string set in CookieComponent::_implode() Maintains reading backwards compatibility with 1.x CookieComponent::_implode().
Parameters
- string $string
- A string containing JSON encoded data, or a bare string.
Returns
Map of key and values
_implode() protected ¶
_implode( array $array )
Implode method to keep keys are multidimensional arrays
Parameters
- array $array
- Map of key and values
Returns
A json encoded string.