TYPO3 - 如何将 f:link.action 中的 cHash 删除为未缓存的操作?
TYPO3 - how to remove cHash in f:link.action to uncached action?
编辑:@Wolffc 的回答完全正确 - 我的 return 值是错误的,所以问题出在椅子和屏幕之间。
TYPO3 10.4.8
我正在使用 在邮件中生成 link 以验证对课程的订阅。
它不能被缓存,所以我可以检查 link 是否已经被点击,但是 link 添加了一个 cHash。
<f:link.action
action="validate"
pluginName="Coursevalidation"
extensionName="myextension"
controller="Course"
pageUid="1"
absolute="1"
pageType="1921"
noCache="1"
noCacheHash="1"
arguments="{validationHash: subscription.validationHash, course:course, subscription:subscription}"
>Link</f:link.action>
文档说不应该使用 noCache 和 noCacheHash(“你不应该需要这个”),如果我添加它也没有区别。
PageType 未缓存,1921.config.no_cache = 1
生成的 link 结果(为了更好的可读性换行):
https://mydomain.ddev.site/email-validation
?no_cache=1
&tx_myextension_coursevalidation%5Baction%5D=validate
&tx_myextension_coursevalidation%5Bcontroller%5D=Course
&tx_myextension_coursevalidation%5Bcourse%5D=3
&tx_myextension_coursevalidation%5Bsubscription%5D=30
&tx_myextension_coursevalidation%5BvalidationHash%5D=40e83[...thats long ;)...]0d65c
&cHash=5d7688ac4f04a2d31a98f2cffb792e51
如您所见,有一个 cHash。
首先点击 Link 会触发我的机制来检查所有内容并将订阅设置为有效,然后重定向到“成功”页面,这正是它应该做的。
第二次点击也打开成功页面,但应该有“已经验证”的消息。
当我在没有 cHash 的情况下调用 Link 时,该页面已打开。
为什么添加了 cHash,如何删除它?
谢谢:)
您必须在 ext_localconf.php
中将此操作定义为未缓存
TYPO3\CMS\Extbase\Utility\ExtensionUtility::配置插件
如果插件操作未缓存,typo3 将正确处理。
cHash是对请求参数的校验和,主要用于防止缓存膨胀攻击。如果攻击者生成随机参数集。如果 cHash 无效。结果不会被缓存。但反之则不然。如果 cHash 有效,则页面的某些部分可能仍未缓存。 (甚至整个页面)
编辑:@Wolffc 的回答完全正确 - 我的 return 值是错误的,所以问题出在椅子和屏幕之间。
TYPO3 10.4.8
我正在使用
它不能被缓存,所以我可以检查 link 是否已经被点击,但是 link 添加了一个 cHash。
<f:link.action
action="validate"
pluginName="Coursevalidation"
extensionName="myextension"
controller="Course"
pageUid="1"
absolute="1"
pageType="1921"
noCache="1"
noCacheHash="1"
arguments="{validationHash: subscription.validationHash, course:course, subscription:subscription}"
>Link</f:link.action>
文档说不应该使用 noCache 和 noCacheHash(“你不应该需要这个”),如果我添加它也没有区别。
PageType 未缓存,1921.config.no_cache = 1
生成的 link 结果(为了更好的可读性换行):
https://mydomain.ddev.site/email-validation
?no_cache=1
&tx_myextension_coursevalidation%5Baction%5D=validate
&tx_myextension_coursevalidation%5Bcontroller%5D=Course
&tx_myextension_coursevalidation%5Bcourse%5D=3
&tx_myextension_coursevalidation%5Bsubscription%5D=30
&tx_myextension_coursevalidation%5BvalidationHash%5D=40e83[...thats long ;)...]0d65c
&cHash=5d7688ac4f04a2d31a98f2cffb792e51
如您所见,有一个 cHash。 首先点击 Link 会触发我的机制来检查所有内容并将订阅设置为有效,然后重定向到“成功”页面,这正是它应该做的。
第二次点击也打开成功页面,但应该有“已经验证”的消息。 当我在没有 cHash 的情况下调用 Link 时,该页面已打开。
为什么添加了 cHash,如何删除它?
谢谢:)
您必须在 ext_localconf.php
中将此操作定义为未缓存TYPO3\CMS\Extbase\Utility\ExtensionUtility::配置插件
如果插件操作未缓存,typo3 将正确处理。
cHash是对请求参数的校验和,主要用于防止缓存膨胀攻击。如果攻击者生成随机参数集。如果 cHash 无效。结果不会被缓存。但反之则不然。如果 cHash 有效,则页面的某些部分可能仍未缓存。 (甚至整个页面)