使用 TYPO3 中间件时如何添加 cookie?

Posted

技术标签:

【中文标题】使用 TYPO3 中间件时如何添加 cookie?【英文标题】:How to add a cookie when using TYPO3 Middleware? 【发布时间】:2021-01-04 14:44:44 【问题描述】:

我想使用中间件添加 cookie。

在 TYPO3 中,我有 Psr\Http\Message\ServerRequestInterface $requestPsr\Http\Server\RequestHandlerInterface $handler 变量。

添加具有所有必要设置(安全、域、过期)的 cookie 的最佳做法是什么?

【问题讨论】:

【参考方案1】:

在 PSR 中没有明确的接口,因为它基本上归结为在 $response 中发送 Set-Cookie 标头。您可以自己构建该标头,也可以使用一些为您执行此操作的包:

https://packagist.org/packages/dflydev/fig-cookies https://packagist.org/packages/hansott/psr7-cookies

【讨论】:

【参考方案2】:

我现在的工作代码是:

$cookie = \Dflydev\FigCookies\SetCookie::create($name)
    ->withValue($value)
    ->withDomain($request->getAttribute('site')->getBase()->getHost())
    ->withSecure(true);

$response = new \TYPO3\CMS\Core\Http\RedirectResponse(
    (string)$request->getUri(),
    302,
    ['Set-Cookie' => (string)$cookie]
);

cookie 已设置,我重定向访问者,因此 cookie 也可以被读取。一个 TypoScript 条件。

【讨论】:

以上是关于使用 TYPO3 中间件时如何添加 cookie?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 TYPO3 v9 URL 中添加斜杠?

在typo3网站上发布新文本的问题

将字段添加到 TYPO3 模板以获取全球站点信息?

如何在https TYPO3后端处理“非https”(http)站点

使用未引用的命名参数时,TYPO3 抛出异常

TYPO3 Fluidcontent:如何在对象内使用 FAL